我有一个java程序放入队列另一端的队列中,我有10-15个消费者;其中任何一个都应阅读并处理它。如果10-15个消费者中的任何一个获得免费,他们会从队列中获取下一条消息。
基本上,消费者可以在空闲时从队列中获取消息,并且只有一个消费者必须接收消息。 (没有任何同步块等)。
如果队列大小变满(或达到一定的阈值),还可以在发送方端暂停将消息发送到队列中吗?
我是JMS API的新手。如果这是一个新手问题,请道歉。
谢谢!!
答案 0 :(得分:1)
我必须将消息发送到队列中,并且我有20个线程正在运行 消费者,他们可以从队列中获取数据(一旦他们是 自由)。所以当每个线程获得空闲时,它会进入队列检查是否 它提取的数据等等......这是可行的吗?
是的,这是可行的 - 这是使用JMS队列执行此操作的标准过程。另一种选择是主题,但是对于主题,每个监听器都必须处理相同的消息,而不仅仅是一个消息,因此队列就是你想要的。虽然通常你没有线程作为消费者(我甚至不确定这意味着什么),但消息驱动的bean。您可以考虑使用它们。无论如何,MDB都在自己的线程中运行。