【java开发消息中间件MQ篇】之rabbitMQ死信、死信队列

728 阅读2分钟

前言: mq的种类很多,知识点也很多,容我娓娓道来,此文章仅代表鄙人的总结和理解,如有错漏,欢迎指正...

一、什么是死信交换机(Dead Letter Exchange 的缩写)

DLX(Dead Letter Exchanges)死信交换,死信队列本身也是一个普通的消息队列,在创建队列的时候,通过设置一些关键参数,可以将一个普通的消息队列设置为死信队列,与其它消息队列不同的是,其入栈的消息根据入栈时指定的过期时间/被拒绝/超出队列长度被移除,依次被转发到指定的消息队列中进行二次处理。这样说法比较拗口,其原理就是死信队列内位于顶部的消息过期时,该消息将被马上发送到另外一个订阅者(消息队列)中

二、什么是死信

1、消息被拒绝(basic.reject或basic.nack)并且requeue=false
2、消息TTL过期
3、队列达到最大长度(队列满了,无法再添加数据到mq中)

三、什么是死信交换机

在定义业务队列的时候,要考虑指定一个死信交换机,死信交换机可以和任何一个普通的队列进行绑定,然后在业务队列出现死信的时候就会将数据发送到死信队列。

四、什么是死信队列

死信队列实际上就是一个普通的队列,只是这个队列跟死信交换机进行了绑定,用来存放死信而已

五、如何使用死信交换机

定义业务(普通)队列的时候指定参数
x-dead-letter-exchange: 用来设置死信后发送的交换机
x-dead-letter-routing-key:用来设置死信的routingKey

更多相关【java开发消息中间件MQ篇】系列文章,请查阅我的个人博客哦...


结语:以往都是看别人的博客进行学习技术,其中不乏有精华博客也有吊儿郎当的CV大法文章,所以决定将自己所学所用所整理的知识分享给大家,主要还是想为了后浪们少走些弯路,多些正能量的博客,如有错漏,欢迎指正,仅希望大家能在我的博客中学到知识,解决到问题,那么就足够了。谢谢大家!(转载请注明原文出处)