RabbitMQ实现延迟队列的两种方式。

前言

之前写了两篇使用Java和RabbitMQ实现延迟队列功能的实践文章,分别对应两种不同的实现方式。

RabbitMQ实现延迟队列的两种方式如下。

1、使用RabbitMQ的延迟插件。

如何使用Java和RabbitMQ实现延迟队列?-CSDN博客

2、使用死信交换机(Dead-Letter-Exchange)。

如何使用Java和RabbitMQ实现延迟队列(方式二)?-CSDN博客

今天来讲讲两种方式的差异。

一、使用RabbitMQ的延迟插件

1、需要额外下载延迟插件并且启用插件功能。

2、创建一个交换机,类型为x-delayed-message

3、创建一个队列,绑定到相应的交换机。

4、监听队列。

5、往相应的交换机和路由发送消息即可实现延迟功能。

MessageProperties messageProperties = new MessageProperties();
messageProperties.setHeader("x-delay", ttlInMilliseconds);
Message msg = MessageBuilder.withBody(message.getBytes()).andProperties(messageProperties).build();

二、使用死信交换机(Dead-Letter-Exchange)

1、不需要插件支持。

2、创建一个死信交换机,类型为direct

3、创建一个死信队列,绑定到死信交换机。

4、创建一个延迟交换机,类型为direct

5、创建一个延迟队列,绑定到延迟交换机,并且设置属性如下。

  • x-dead-letter-exchange = 死信交换机
  • x-dead-letter-routing-key = 死信路由
  • x-message-ttl = 设置默认 TTL(毫秒),可选配置

6、监听死信队列。

7、往延迟交换机和路由发送消息。

MessageProperties messageProperties = new MessageProperties();
messageProperties.setExpiration(Long.toString(ttlInMilliseconds));
Message msg = MessageBuilder.withBody(message.getBytes()).andProperties(messageProperties).build();

总结

今天主要讲RabbitMQ实现延迟队列的两种方式有哪些差异,主要体现在下面三个方面。

1、是否需要插件支持。

2、交换机类型。

3、发送消息的属性。

最后因本人能力有限,有什么不对的地方望各位大佬指出好让我改进,多多包含,谢谢大家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ayzen1988

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值