异步通信rabbitmq――消息重试

匿名 (未验证) 提交于 2019-12-03 00:27:02

目标:


准备:




  • rejected - the message was rejected with requeue=false,

  • expired - the TTL of the message expired; or

  • maxlen - the maximum allowed queue length was exceeded.

这里,我们使用expired来实现。给消息设置TTL,到期后消息未被消费,则会变成dead messager,转发到dead letter exchange。

流程图:


实现:

1、创建三个exchange。没有特殊要求


2、创建三个queue。


clickQueue@retry作为重试队列,需要特殊处理:

x-dead-letter-exchange:clickExchange
x-dead-letter-routing-key:clickKey

x-message-ttl:30000

3、处理代码



4、x-death的使用:message在转换成dead letter时,会在其header里添加一个名为x-death的数组。数组元素就是一次dead lettering event的记录。包含count:消息几次变成了dead letter。


总结:

此处只是本人的拙见。如有更好的提议,欢迎拍砖。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!