我正在使用 webservice 调用将 SOAP 消息发送到外部服务。有时外部网络服务已关闭,所以我不想丢失那些失败的消息。我将那些失败的消息推送到一个指定为重试队列的 jms 队列。
现在我的要求是我必须实现一种机制,在一段时间后(比如说半小时)处理来自重试队列的失败消息,并尝试再次传递到 web 服务。我应该每隔半小时使用固定次数的尝试。如果在固定次数的尝试后我没有成功,我应该将消息放入死信队列。
我需要帮助来实现这个要求。
作为朝这个方向迈出的第一步,我尝试在重试队列上使用 jms 轮询并将轮询间隔设置为半小时。此 jms 轮询作业每半小时唤醒一次,并处理重试队列中存在的所有消息。这种方法的缺点是,它会在第一次收到失败的消息时尝试重新传递。对于后续消息,它工作正常。因此,当某些消息失败并且我将该消息放入重试队列时,它会尝试立即重新传递该消息。