0

我有一个场景,使用某些文本消息网关,我通过 servlet 中的 GET 接收传入消息,编写回复消息,使用 id 键将其存储在数据库中,然后使用相应的服务将其发送出去。消息发送结果通过 POST 发送给我(消息 ID 和文本结果(成功或失败))。

所以,我想要实现的是消息队列:在失败的情况下以固定的重试次数一一发送消息。

我不能只是找到正确实施它的方法。例如,这就是我遇到的问题-在消息处理程序的 doGet 方法中,我正在接收新消息,编写回复,将回复消息存储到数据库中,然后将其放入单例队列中,以便在适当的时候将它们发送出去。然后我可以使用某种带有 run() 方法的线程,它只是在无限循环中不断地从队列中一个接一个地获取消息并尝试发送它一定次数(比如 5 次)。

如果消息发送成功 - 那么我只需要从队列中删除消息并打破内部循环。

这是我卡住的棘手部分 - 如果我通过 serlvet 中的 POST 获得结果(消息 ID 和结果),我如何在线程中确定消息是否成功发送?

我可以存储我现在尝试发送的消息的当前 ID,但这并没有让我更清楚。

那么我担心的是,考虑到我的情况,实现消息队列的最佳方式是什么?我并不是说我建议的设计决策在任何方面都足够并且需要保留。我会很感激任何帮助 - 无论是建议改进我看到解决我提到的问题的实现的方式,还是建议某种全新的更合适的方法,这将非常受欢迎。

非常感谢您!

4

1 回答 1

0

您可以使用一些外部方法来存储消息的状态,例如数据库。POST 处理程序将使用成功或失败条件更新数据库,并且消息队列可以查询数据库的状态。

于 2013-05-22T14:44:03.747 回答