JMS队列:要读取的多个线程

时间:2014-02-27 20:35:28

标签: java jms activemq


我有一个java程序放入队列另一端的队列中,我有10-15个消费者;其中任何一个都应阅读并处理它。如果10-15个消费者中的任何一个获得免费,他们会从队列中获取下一条消息。



基本上,消费者可以在空闲时从队列中获取消息,并且只有一个消费者必须接收消息。 (没有任何同步块等)。
如果队列大小变满(或达到一定的阈值),还可以在发送方端暂停将消息发送到队列中吗?


我是JMS API的新手。如果这是一个新手问题,请道歉。


谢谢!!

1 个答案:

答案 0 :(得分:1)

  

我必须将消息发送到队列中,并且我有20个线程正在运行   消费者,他们可以从队列中获取数据(一旦他们是   自由)。所以当每个线程获得空闲时,它会进入队列检查是否   它提取的数据等等......这是可行的吗?

是的,这是可行的 - 这是使用JMS队列执行此操作的标准过程。另一种选择是主题,但是对于主题,每个监听器都必须处理相同的消息,而不仅仅是一个消息,因此队列就是你想要的。虽然通常你没有线程作为消费者(我甚至不确定这意味着什么),但消息驱动的bean。您可以考虑使用它们。无论如何,MDB都在自己的线程中运行。