RabbitMQ 消息队列 延时队列和死信队列
如果你不熟悉RabbitMQ,本文从图形界面入手介绍 RabbitMQ 的基本使用方法和 延时队列和死信队列的实现方法。
如果需要代码实现的话请参考:[java 代码](gitee.com/xuejianxino…
1. windows 上安装rabbitmq
- 安装 erlang 虚拟机 otp_win64_23.2.exe
- 安装 rabbitmq-server-3.8.14.exe
安装完成后 ,启动类型最好 修改为手动
![](https://img.haomeiwen.com/i23866222/3eb98a0a326c65d7.png)
![](https://img.haomeiwen.com/i23866222/824e7d50285750c3.png)
- 打开rabbitmq 控制台 参考文档 blog.csdn.net/chentao866/…
![](https://img.haomeiwen.com/i23866222/4cf71cf5049908d3.png)
打开rabbitMQ的控制台输入:启用管理插件
rabbitmq-plugins enable rabbitmq_management
在浏览器中 打开 http://127.0.0.1:15672/
超级管理员账号和密码都是:guest
![](https://img.haomeiwen.com/i23866222/d76b8f521a6f53f1.png)
![](https://img.haomeiwen.com/i23866222/1e056c87bd8eec05.png)
2. fanout 模式
![](https://img.haomeiwen.com/i23866222/b344bc7fde621140.png)
Exchange和Queue建立一个绑定关系,Exchange会分发给所有和它有绑定关系的Queue中,绑定了十个Queue就把消息复制十份进行分发。
创建2个用于接收fanout 消息的队列
![](https://img.haomeiwen.com/i23866222/8c5a238923dcfa4b.png)
![](https://img.haomeiwen.com/i23866222/b0b4f85a6b0dd090.png)
创建交换机
![](https://img.haomeiwen.com/i23866222/5601288c51ba2e04.png)
创建绑定关系
![](https://img.haomeiwen.com/i23866222/5ca59065848e3375.png)
![](https://img.haomeiwen.com/i23866222/9b494c2d8912e1c9.png)
最终的绑定关系
![](https://img.haomeiwen.com/i23866222/30e5c0c679643f2c.png)
![](https://img.haomeiwen.com/i23866222/9e89ae9926254671.png)
然后在 队列查看是否收到消息
![](https://img.haomeiwen.com/i23866222/75b7ce7b5b4a61e5.png)
查看消息
![](https://img.haomeiwen.com/i23866222/7846de6b8a7fbf04.png)
![](https://img.haomeiwen.com/i23866222/c99db5a02d4d389f.png)
可以看到消息具体内容
![](https://img.haomeiwen.com/i23866222/6fd4a31edcd1c83e.png)
![](https://img.haomeiwen.com/i23866222/e48e85b31930133f.png)
3. Direct-Exchange 模式
![](https://img.haomeiwen.com/i23866222/6a1b48dac5f522ea.png)
准备一条消息发往名为SendService的直接交换机中去,这个交换机主要是用来做发送服务,所以其绑定了两个队列,SMS队列和MAIL队列,用于发送短信和邮件。 我们的消息除了指定ExchangeKey(此处为SendService)还需要指定routingKey(具体到那个队列 sms还是mail ),routingKey对应着最终要发送的是哪个队列,我们的示例中的routingKey是sms,这里这条消息就会交给SMS队列
创建队列 mailQueue和smsQueue
![](https://img.haomeiwen.com/i23866222/2a6a8e13efceab14.png)
创建交换机
![](https://img.haomeiwen.com/i23866222/8f14644035220206.png)
设置与队列的绑定关系
![](https://img.haomeiwen.com/i23866222/03f1dc9fc808470c.png)
![](https://img.haomeiwen.com/i23866222/30909234c90ffba7.png)
发送sms 消息
![](https://img.haomeiwen.com/i23866222/f541ca49cf39c580.png)
![](https://img.haomeiwen.com/i23866222/2bb618640c4cc369.png)
发送mail 消息
![](https://img.haomeiwen.com/i23866222/6de3992eae76b30f.png)
![](https://img.haomeiwen.com/i23866222/9b1bf8f66e311a88.png)
测试消费消息同fanout
4.Topic-Exchange
' *:能够模糊匹配一个单词。
' #:能够模糊匹配零个或多个单词。
因为加入了两个通配定义符,所以Topic交换机的routingKey也有些变化,routingKey可以使用 . 将单词分开。
![](https://img.haomeiwen.com/i23866222/bc56f9b81800c3f3.png)
创建交换机
![](https://img.haomeiwen.com/i23866222/629cfa8ab60cc547.png)
![](https://img.haomeiwen.com/i23866222/60f691c7af5e8571.png)
![](https://img.haomeiwen.com/i23866222/3ac922d032a10916.png)
![](https://img.haomeiwen.com/i23866222/b28381cf0372bac8.png)
![](https://img.haomeiwen.com/i23866222/3d13118488735aba.png)
![](https://img.haomeiwen.com/i23866222/81e962b1a84e96d8.png)
![](https://img.haomeiwen.com/i23866222/d27a07d7469e8dfa.png)
![](https://img.haomeiwen.com/i23866222/7eebd4810a96259a.png)
![](https://img.haomeiwen.com/i23866222/e0b244ad5df8a33c.png)
![](https://img.haomeiwen.com/i23866222/b10368d2c34f987f.png)
5.实现延迟消息
www.rabbitmq.com/community-p… 版本太旧不能用,不能支持到3.8.14
![](https://img.haomeiwen.com/i23866222/a368139b485e3271.png)
www.rabbitmq.com/priority.ht… 支持优先队列
Channel ch = ...;
Map<String, Object> args = new HashMap<String, Object>(); args.put("x-max-priority", 10); ch.queueDeclare("my-priority-queue", true, false, false, args); 利用单独延迟队列 实现消息过时 创建一个延迟队列 延迟10s
![](https://img.haomeiwen.com/i23866222/b3720f6c80944632.png)
![](https://img.haomeiwen.com/i23866222/4de4ab34c9c5fb6f.png)
![](https://img.haomeiwen.com/i23866222/b6db01a6f4a0b1df.png)
单独设置消息ttl,使条消息过时 添加一个普通队列 testQueue
![](https://img.haomeiwen.com/i23866222/31a327fb2468d838.png)
![](https://img.haomeiwen.com/i23866222/a0c547486a6cb13d.png)
![](https://img.haomeiwen.com/i23866222/8deea5baf2fa402e.png)
![](https://img.haomeiwen.com/i23866222/9635c257616a326a.png)
![](https://img.haomeiwen.com/i23866222/d6bc6a6b17e032a9.png)
6.死信队列
![](https://img.haomeiwen.com/i23866222/d9af21f997f2a561.png)
![](https://img.haomeiwen.com/i23866222/da2d400851783b71.png)
![](https://img.haomeiwen.com/i23866222/515dc68a91e02098.png)
![](https://img.haomeiwen.com/i23866222/8dd2f1e997edd4e9.png)
![](https://img.haomeiwen.com/i23866222/4b38a9a2cc49b606.png)
![](https://img.haomeiwen.com/i23866222/c0d8b9906f387ba0.png)
作者:xuejianxinokok
链接:https://juejin.cn/post/7095299294629986340
来源:稀土掘金