RabbitMQ 消息队列 延时队列和死信队列

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

如果你不熟悉RabbitMQ,本文从图形界面入手介绍 RabbitMQ 的基本使用方法和 延时队列和死信队列的实现方法。

如果需要代码实现的话请参考:[java 代码](gitee.com/xuejianxino…

1. windows 上安装rabbitmq

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

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

image.png

image.png

  1. 打开rabbitmq 控制台 参考文档 blog.csdn.net/chentao866/…

image.png

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

rabbitmq-plugins enable rabbitmq_management

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

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

image.png

image.png

2. fanout 模式

image.png

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

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

image.png

image.png

创建交换机

image.png

创建绑定关系

image.png

image.png

最终的绑定关系

image.png

image.png

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

image.png

查看消息

image.png

image.png

可以看到消息具体内容

image.png

image.png

3. Direct-Exchange 模式

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

创建队列 mailQueue和smsQueue

image.png

创建交换机

image.png

设置与队列的绑定关系

image.png

image.png

发送sms 消息

image.png

image.png

发送mail 消息

image.png

image.png

测试消费消息同fanout

4.Topic-Exchange

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

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

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

image.png

创建交换机

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

5.实现延迟消息

www.rabbitmq.com/community-p… 版本太旧不能用,不能支持到3.8.14

image.png

www.rabbitmq.com/priority.ht… 支持优先队列

优先队列设置java 代码如下:

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

image.png

image.png

image.png

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

image.png

image.png

image.png

image.png

image.png

6.死信队列

image.png

image.png

image.png

image.png

image.png

image.png

image.png

参考文档:

mp.weixin.qq.com/s/szRsuIqsI… mp.weixin.qq.com/s/IIGkqrMkS…

gitee.com/he-erduo/sp…

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

blog.csdn.net/qq_36357242… 普通模式 blog.csdn.net/qq_36357242… 工作模式 blog.csdn.net/qq_36357242… 发布订阅 blog.csdn.net/qq_36357242… 路由模式 blog.csdn.net/qq_36357242… 通配符模式

分类:
后端
标签: