博客
关于我
电商项目——消息队列——第十一章——中篇
阅读量: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/

    你可能感兴趣的文章
    Python内置函数(35)——next
    查看>>
    python写入mysql
    查看>>
    python写入csv老是乱码或者各种不好
    查看>>
    Python内置函数
    查看>>
    Python2 安装MySQLdb库
    查看>>
    Python2 已终结,入手Python 3,你需要这30个技巧
    查看>>
    python写下拉列表在excel,无法使用python获取Excel下拉列表(组合框)值
    查看>>
    python2.7安装
    查看>>
    Python2.7安装ncmbot时提示:Microsoft Visual C++9.0 is required
    查看>>
    PYTHON2.Git.1
    查看>>
    python20181211
    查看>>
    Python内存管理机制
    查看>>
    Python2中range 和xrange的区别??
    查看>>
    python2和3的区别
    查看>>
    python2和python3的pip版本升级
    查看>>
    python2和python3的区别
    查看>>
    python2备份交换机配置脚本
    查看>>
    Python3 - 在字符串格式化程序参数中使用变量
    查看>>
    Python3 A*寻路算法实现
    查看>>
    python3 grpc安装
    查看>>