RabbitMQ 消息队列

xuejianxinokok 2021年3月31日 周三 11:29:09

java 代码实现位置

rabbitmq · xuejianxinokok/springboot2 - 码云 - 开源中国 (gitee.com)

windows 上安装rabbitmq

1. 安装 erlang 虚拟机  otp_win64_23.2.exe
2. 安装 rabbitmq-server-3.8.14.exe

安装完成后 ,启动类型最好 修改为手动

 

 3. 打开rabbitmq 控制台  参考文档  https://blog.csdn.net/chentao866/article/details/79668477

RabbitMQ 消息队列_第1张图片

打开rabbitMQ的控制台输入:启用管理插件

rabbitmq-plugins enable rabbitmq_management

在浏览器中 打开 http://127.0.0.1:15672/

超级管理员账号和密码都是:guest

RabbitMQ 消息队列_第2张图片

 ==============================================
测试消息队列

RabbitMQ 消息队列_第3张图片

=========================================fanout 模式===================:

 RabbitMQ 消息队列_第4张图片

Exchange和Queue建立一个绑定关系,Exchange会分发给所有和它有绑定关系的Queue中,绑定了十个Queue就把消息复制十份进行分发。


创建2个用于接收fanout 消息的队列

RabbitMQ 消息队列_第5张图片

 RabbitMQ 消息队列_第6张图片

 创建交换机

RabbitMQ 消息队列_第7张图片

 创建绑定关系

RabbitMQ 消息队列_第8张图片

 RabbitMQ 消息队列_第9张图片

 最终的绑定关系

RabbitMQ 消息队列_第10张图片

 RabbitMQ 消息队列_第11张图片

 然后在 队列查看是否收到消息

RabbitMQ 消息队列_第12张图片

 查看消息

RabbitMQ 消息队列_第13张图片

 RabbitMQ 消息队列_第14张图片

 可以看到消息具体内容

RabbitMQ 消息队列_第15张图片

 RabbitMQ 消息队列_第16张图片

 Direct-Exchange 模式

RabbitMQ 消息队列_第17张图片

准备一条消息发往名为SendService的直接交换机中去,这个交换机主要是用来做发送服务,所以其绑定了两个队列,SMS队列和MAIL队列,用于发送短信和邮件。
我们的消息除了指定ExchangeKey(此处为SendService)还需要指定routingKey(具体到那个队列 sms还是mail  ),routingKey对应着最终要发送的是哪个队列,我们的示例中的routingKey是sms,这里这条消息就会交给SMS队列


创建队列 mailQueue和smsQueue

RabbitMQ 消息队列_第18张图片

 创建交换机

RabbitMQ 消息队列_第19张图片

 设置与队列的绑定关系

RabbitMQ 消息队列_第20张图片

 RabbitMQ 消息队列_第21张图片

 发送sms 消息

RabbitMQ 消息队列_第22张图片

 RabbitMQ 消息队列_第23张图片

 发送mail 消息

RabbitMQ 消息队列_第24张图片

 RabbitMQ 消息队列_第25张图片

 测试消费消息同fanout

===Topic-Exchange===============================

*:能够模糊匹配一个单词。


#:能够模糊匹配零个或多个单词。


因为加入了两个通配定义符,所以Topic交换机的routingKey也有些变化,routingKey可以使用  .  将单词分开。

RabbitMQ 消息队列_第26张图片

 创建交换机

RabbitMQ 消息队列_第27张图片

 RabbitMQ 消息队列_第28张图片

 RabbitMQ 消息队列_第29张图片

 RabbitMQ 消息队列_第30张图片

 RabbitMQ 消息队列_第31张图片

 RabbitMQ 消息队列_第32张图片

 RabbitMQ 消息队列_第33张图片

 RabbitMQ 消息队列_第34张图片

 RabbitMQ 消息队列_第35张图片

 RabbitMQ 消息队列_第36张图片

 =====================================实现延迟消息====================

https://www.rabbitmq.com/community-plugins.html   版本太旧不能用,不能支持到3.8.14

RabbitMQ 消息队列_第37张图片

https://www.rabbitmq.com/priority.html   支持优先队列 

Channel ch = ...;

Map args = new HashMap();
args.put("x-max-priority", 10);
ch.queueDeclare("my-priority-queue", true, false, false, args);
利用单独延迟队列 实现消息过时
创建一个延迟队列  延迟10s

RabbitMQ 消息队列_第38张图片

 RabbitMQ 消息队列_第39张图片

 RabbitMQ 消息队列_第40张图片

 单独设置消息ttl,使条消息过时
 添加一个普通队列  testQueue

RabbitMQ 消息队列_第41张图片

 RabbitMQ 消息队列_第42张图片

 RabbitMQ 消息队列_第43张图片

 RabbitMQ 消息队列_第44张图片

 RabbitMQ 消息队列_第45张图片

 死信队列

RabbitMQ 消息队列_第46张图片

 RabbitMQ 消息队列_第47张图片

 RabbitMQ 消息队列_第48张图片

 RabbitMQ 消息队列_第49张图片

 RabbitMQ 消息队列_第50张图片

 RabbitMQ 消息队列_第51张图片

参考文档:

https://mp.weixin.qq.com/s/szRsuIqsIrxCikEt98EZ2w
https://mp.weixin.qq.com/s/IIGkqrMkS9rbzTpNHZICjg

https://gitee.com/he-erduo/spring-boot-learning-demo/tree/master

相关文章:没用过消息队列?一文带你体验RabbitMQ收发消息
相关文章:刚体验完RabbitMQ?一文带你SpringBoot+RabbitMQ方式收发消息
相关文章:上手了RabbitMQ?再来看看它的交换机(Exchange)吧
相关文章:RabbitMQ高级之如何保证消息可靠性?
相关文章:RabbitMQ高级之消息限流与延时队列

https://blog.csdn.net/qq_36357242/article/details/107664806 普通模式
https://blog.csdn.net/qq_36357242/article/details/107682005 工作模式
https://blog.csdn.net/qq_36357242/article/details/107686056 发布订阅
https://blog.csdn.net/qq_36357242/article/details/107688368 路由模式
https://blog.csdn.net/qq_36357242/article/details/107689007  通配符模式
 

你可能感兴趣的:(java,rabbitmq,队列)