ActiceMQ详解 (17)

然后你会看到的就是,在第三方物流系统故障期间,所有订单消息全部处理失败,全部会转入死信队列。然后你的仓储系统得专门有一个后台线程,监控第三方物流系统是否正常,是否请求,不停的监视。一旦发现对方恢复正常,这个后台线程就从死信队列消费出来处理失败的订单,重新执行发货和配送的通知逻辑。

image-20210118234828832

死信队列的配置(一般采用默认)

sharedDeadLetterStrategy

不管是queue还是topic,失败的消息都放到这个队列中。下面修改activemq.xml的配置,可以达到修改队列的名字。

将所有的DeadLetter保存在一个共享的队列中,这是ActiveMQ broker端默认的策略。共享队列默认为“ActiveMQ.QLQ”,可以通过"deaLetterQueue"属性来设定

<deadLetterStrategy> <sharedDeadLetterStrategy deaLetterQueue="DLQ-QUEUE"/> </deadLetterStrategy>

individualDeadLetterStrategy

可以为queue和topic单独指定两个死信队列。还可以为某个话题,单独指定一个死信队列。

image-20210118235956137

属性"useQueueForTopicMessages",此值表示是否将Topic的DeaLetter保存在Queue中,默认为true

image-20210119000123044

自动删除过期消息

过期消息是值生产者指定的过期时间,超过这个时间的消息

image-20210119000210743

存放非持久消息到死信队列中

image-20210119000255042

10.7 消息不被重复消费,幂等性问题

之后回来完善

activemq的API文档:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyyysx.html