然后你会看到的就是,在第三方物流系统故障期间,所有订单消息全部处理失败,全部会转入死信队列。然后你的仓储系统得专门有一个后台线程,监控第三方物流系统是否正常,是否请求,不停的监视。一旦发现对方恢复正常,这个后台线程就从死信队列消费出来处理失败的订单,重新执行发货和配送的通知逻辑。
死信队列的配置(一般采用默认)
sharedDeadLetterStrategy
不管是queue还是topic,失败的消息都放到这个队列中。下面修改activemq.xml的配置,可以达到修改队列的名字。
将所有的DeadLetter保存在一个共享的队列中,这是ActiveMQ broker端默认的策略。共享队列默认为“ActiveMQ.QLQ”,可以通过"deaLetterQueue"属性来设定
<deadLetterStrategy> <sharedDeadLetterStrategy deaLetterQueue="DLQ-QUEUE"/> </deadLetterStrategy>
individualDeadLetterStrategy
可以为queue和topic单独指定两个死信队列。还可以为某个话题,单独指定一个死信队列。
属性"useQueueForTopicMessages",此值表示是否将Topic的DeaLetter保存在Queue中,默认为true
自动删除过期消息
过期消息是值生产者指定的过期时间,超过这个时间的消息
存放非持久消息到死信队列中
之后回来完善
activemq的API文档: