DLX,全称为Dead-Letter-Exchange,可以称之为死信交换器,也有人称之为死信邮箱。当消息在一个队列中变成死信(dead message)之后,它能被重新被发送到另一个交换器中,这个交换器就是 DLX,绑定 DLX 的队列就称之为死信队列。
2.产生死信队列的原因- 消息被拒绝(basic.reject或basic.nack)并且requeue=false.
- 消息TTL过期,即当前消息在队列中的存活时间已经超过了预先设置的TTL
- 队列达到最大长度(队列满了,无法再添加数据到mq中)
channel.exchangeDeclare("dlx_exchange","direct"); // 创建 DLX: dlx_exchange Mapmap = new HashMap (); map.put ("x-dead-letter-exchange" ,"dlx_exchange"); // 为队列 myqueue 添加 DLX channel.queueDeclare("myqueue", false, false, false, map);
- 设置TTL队列,需要在创建队列的时候,设置上一个属性 x-message-ttl
- 设置方式:map.put("x-message-ttl", 10000);
- 核心代码:map.put("x-dead-letter-exchange", EXCHANGE_NAME_DLX); 一定要设置 ttl 队列的死信属性
- 死信队列就是一个普通的队列
- 应用场景:消息的延迟发送,定时关闭订单等。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)