文本消息排队实现的设计决策

时间:2013-05-22 14:15:32

标签: java servlets message-queue

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

所以,我想要实现的是消息队列:在发生故障的情况下,使用固定数量的重试逐个发送消息。

我不能正确地实现它。以下是我的内容,例如 - 在消息处理程序的doGet方法中,我收到新消息,编写回复,将回复消息存储到数据库,然后将其放入单例队列,以便在时间发送出去。然后我可以使用run()方法创建一些线程,它只是连续地在无限循环中逐个从队列中获取消息并尝试发送一定次数(例如,5)。

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

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

我可以存储我此刻尝试发送的消息的当前ID,但这并不能让我更清楚。

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

非常感谢你!

1 个答案:

答案 0 :(得分:0)

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