使用后台线程与使用消息队列

时间:2011-05-18 00:29:28

标签: java multithreading command queue messaging

我目前正在开发一系列警报,这些警报将检查来自外部Web服务的响应的状态,并根据响应对象的状态发送警报(例如超时,无效数据等)。我希望主线程在评估响应并发送警报时继续工作。

我有两个直接的选择:

  1. 使用ActiveMQ并将对象作为objectMessage发送到队列进行处理。
  2. 使用命令模式并线程处理警报的异步命令。
  3. 它们对我来说似乎都是不错的选择,但我倾向于使用线程命令,因为我不需要消息队列的大部分功能。

    问题:您如何决定使用哪个以及为什么?

3 个答案:

答案 0 :(得分:6)

两个字:

保证交付。如果这对您很重要,那么您可以使用消息队列。

答案 1 :(得分:2)

听起来你正在把一些东西放在一起来处理应用程序中的事件。为此,java.util.concurrent包中有很多选项。消息队列有利于保证交付(可以提供持久性)并允许消息到多个服务器。

util.concurrent的ExecutorService允许您提交要在线程池上执行的任务。它返回的未来允许您继续处理并在以后检查结果。

Future<?> submit(Runnable task) 

如果这不是您所需要的,则java.util.concurrent中可能还有其他选项。

答案 2 :(得分:1)

我会根据你的想法决定......一个完整的消息队列,虽然非常强大,但是比你需要的还要大。更不用说它是另一个进程/服务器/等。所以,我会投票给第二个选项。 : - )