死信队列和延时队列

死信队列和延时队列,第1张

死信队列和延时队列 死信队列 1.概念

DLX,全称为Dead-Letter-Exchange,可以称之为死信交换器,也有人称之为死信邮箱。当消息在一个队列中变成死信(dead message)之后,它能被重新被发送到另一个交换器中,这个交换器就是 DLX,绑定 DLX 的队列就称之为死信队列。

2.产生死信队列的原因

  1. 消息被拒绝(basic.reject或basic.nack)并且requeue=false.
  2. 消息TTL过期,即当前消息在队列中的存活时间已经超过了预先设置的TTL
  3. 队列达到最大长度(队列满了,无法再添加数据到mq中)
channel.exchangeDeclare("dlx_exchange","direct"); // 创建 DLX: dlx_exchange
Map map = new HashMap();
map.put ("x-dead-letter-exchange" ,"dlx_exchange");
// 为队列 myqueue 添加 DLX
channel.queueDeclare("myqueue", false, false, false, map);
  1. 设置TTL队列,需要在创建队列的时候,设置上一个属性 x-message-ttl
  2. 设置方式:map.put("x-message-ttl", 10000);
小结
  1. 核心代码:map.put("x-dead-letter-exchange", EXCHANGE_NAME_DLX); 一定要设置 ttl 队列的死信属性
  2. 死信队列就是一个普通的队列
  3. 应用场景:消息的延迟发送,定时关闭订单等。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5677754.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存