我有一个我的ActiveMQ代理已关闭的场景。我的生产者正在尝试以异步方式(connectionfactory.setUseAsyncSend(true)
)向此代理发送消息。由于经纪人关闭,没有消息到达经纪人。我想对此失败的消息执行重新传递,如果进行了固定数量的重新传递尝试,则将它们放入死信队列。如果可能,在代理启动后从deadletter队列发送这些消息。
我正在使用JMSTemplate发送消息,代码是用Java编写的。
非常感谢任何帮助。
答案 0 :(得分:0)
如果您的经纪人关闭,您将无法写入DLQ,因为它也位于经纪人身上!
您最好的选择是正确处理此故障情况,并在您的运行状况检查认为代理已备份之前进行适当的停止。 docs并不是那么清楚,但是当你可以容忍一些消息丢失时,异步发送似乎是理想的。它可能是异步发送,如果出现问题,最初不会给你Exception
,所以如果你不能容忍消息丢失,你可能需要使用同步。