博客
关于我
电商项目——消息队列——第十一章——中篇
阅读量:326 次
发布时间:2019-03-04

本文共 1652 字,大约阅读时间需要 5 分钟。

RabbitMQ 简介与使用实践

RabbitMQ 简介

RabbitMQ 是一个开源的消息队列系统,广泛应用于分布式系统中的消息中继与解耦。其核心功能包括点对点排队和发布/订阅模式,支持异步处理、大规模流量处理以及系统间解耦等场景。

消息代理与使用场景

消息代理是 RabbitMQ 的核心功能,负责接收、存储和分发消息。其主要场景包括:

  • 异步处理:例如用户注册时,发送邮件和短信可以作为异步任务处理。
  • 应用解耦:通过将业务逻辑移出消息队列,减少服务间耦合。
  • 流量监控:处理大并发请求,防止系统过载。
  • RabbitMQ 安装与配置

    安装命令

    docker run --name rabbitmq \-p 5671:5671 -p 5672:5672 \-p 4369:4369 -p 25672:25672 \-p 15671:15671 -p 15672:15672 \rabbitmq:management

    安装完成后,访问 虚拟机IP:15672 进入管理界面。

    SpringBoot 整合

  • 依赖添加

    org.springframework.boot
    spring-boot-starter-amqp
  • 配置管理:在 application.yml 中添加:

    spring:    rabbitmq:        host: 192.168.56.10        port: 5672        virtual-host: #
  • 启用插件:在主类加注解 @EnableRabbit

  • Exchange 类型与操作

    RabbitMQ 提供四种交换机类型,常用 DirectExchange 和 TopicExchange。

    DirectExchange

    直接交换机,消息直接投送至队列,无路由键转换。

    TopicExchange

    主题交换机,基于主题模式路由消息,支持多级匹配。

    FanoutExchange

    扇出交换机,消息同时投送至所有绑定的队列。

    Exchange 绑定

  • 创建交换机:

    amqpAdmin.declareExchange(new DirectExchange("hello-java-exchange", true, false));
  • 创建队列:

    amqpAdmin.declareQueue(new Queue("hello-java-queue", true, false, false));
  • 绑定交换机与队列:

    amqpAdmin.declareBinding(new Binding("hello-java-queue", Binding.DestinationType.QUEUE, "hello-java-exchange", "hello-java-queue", null));
  • 消息可靠传输

    发送端确认

  • 配置发送端:

    rabbitTemplate.setConfirmCallback(new ConfirmCallback() {    @Override    public void confirm(CorrelationData correlationData, boolean ack, String cause) {        // 确认消息成功接收    }});
  • 发送消息时启用确认机制:

    spring.rabbitmq.publisher-confirm-type=correlated
  • 消费端确认

  • 配置消费端:

    spring.rabbitmq.listener.simple.acknowledge-mode=manual
  • 消费消息时手动确认:

    channel.basicAck(deliveryTag, false);
  • 结论

    通过以上配置和实践,RabbitMQ 可以有效支持系统的消息中继与解耦,提升消息处理能力和系统稳定性。

    转载地址:http://dkhq.baihongyu.com/

    你可能感兴趣的文章
    Oracle 在Drop表时的Cascade Constraints
    查看>>
    Oracle 在Sqlplus 执行sql脚本文件。
    查看>>
    Oracle 如何处理CLOB字段
    查看>>
    oracle 学习
    查看>>
    oracle 定义双重循环例子
    查看>>
    ORACLE 客户端工具连接oracle 12504
    查看>>
    Oracle 客户端连接时报ORA-01019错误总结
    查看>>
    oracle 嵌套表 例子,Oracle之嵌套表(了解)
    查看>>
    Oracle 常用命令
    查看>>
    Oracle 常用的V$视图脚本(二)
    查看>>
    Oracle 并行原理与示例总结
    查看>>
    oracle 并集 时间_Oracle集合运算符 交集 并集 差集
    查看>>
    Oracle 序列sequence 开始于某个值(10)执行完nextval 发现查出的值比10还小的解释
    查看>>
    oracle 执行一条查询语句,把数据加载到页面或者前台发生的事情
    查看>>
    oracle 批量生成建同义词语句和付权语句
    查看>>
    oracle 抓包工具,shell 安装oracle和pfring(抓包) 及自动环境配置
    查看>>
    Oracle 拆分以逗号分隔的字符串为多行数据
    查看>>
    Oracle 排序中使用nulls first 或者nulls last 语法
    查看>>
    oracle 插入date日期类型的数据、插入从表中查出的数据,使用表中的默认数据
    查看>>
    Oracle 操作笔记
    查看>>