新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
死信队列介绍
成都创新互联总部坐落于成都市区,致力网站建设服务有网站制作、成都网站设计、网络营销策划、网页设计、网站维护、公众号搭建、微信平台小程序开发、软件开发等为企业提供一整套的信息化建设解决方案。创造真正意义上的网站建设,为互联网品牌在互动行销领域创造价值而不懈努力!本文是《RabbitMQ精讲系列》中第十七:RabbitMQ消息中间件技术精讲17 高级篇十 死信队列
死信队列:DLX(dead-letter-exchange)
当一个消息没有了消费者之后,这个队列就成了死信队列。
在RabbitMQ中,死信队列是相对于exchange的。RabbitMQ的死信队列:
利用DLX,当消息在一个队列中变为死信(dead message)之后,它能被重新publish到另一个exchange,这个exchange就是DLX死信队列了。
在RabbitMQ中,消息如何变成死信的?有以下几种情况:
1:消息被拒绝
消息被拒绝又分为:basic.reject和basic.nack两种
当是这两种情况下且设置了requeeu=false。也就是设置重回队列为false的情况
2:消息TTL过期
在上一篇文章中,我们讲的TTL消息的时效性。当消息超过了设置的超时时间情况
3:队列达到大长度
同样,在上一篇中,我们讲到了在发送消息的时候,设置消息的大上的。当发送消息的数据长度超过了设置的值之后,这种情况也成了死信队列。
在来看看rabbitmq死信队列:
DLX也是一个正常的exchange,和一般的exchange没有区别,它能在任何的队列上被指定,实际上也就是设置某个队列的属性而已;
当这个队列中有死信时候,rabbitmq就会自动的将这个消息重新发布到设置的exchange上去,进而被路由到另一个队列。
可以监听这个队列中消息做相应的处理,这个特性可以弥补rabbitmq3.0以前支持immediate参数的功能。
死信队列设置:
1 :设置死信队列的exchange和queue,然后进行绑定(这是废话,任何一个队列都是这样的):
Exchange:dlx.exchange
Queue:dlx.queue
Routingkey:#
2 :然后我们进行正常的声明交换机、队列、绑定,只不过我们需要在队列加上一个参数即可。这个参数就是:arguments.put(“x-dead-letter-exchange”,”dlx.exchange”).
说明:arguments.put(“x-dad-letter-exchange”,”这里是自己定义的接收死信队列的exchange”)
这样消息在过期、requeue、队列在达到大长度时,消息就可以直接路由到死信队列了!
代码这里就不截图了,已发布在git上。
本章节总结:
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。