如何将多条消息一起传递给ActiveMQ中的Listener?

时间:2014-12-30 10:42:06

标签: java jms activemq

我希望通过activemq将100条消息一起传递给消费者,但同时生产者将一次生成一条消息。

我想要的原因是因为我不想处理在交付时单独处理每条消息的开销,而是希望在交付时进行批量处理。

是否可以通过ActiveMQ实现这一目标,或者我应该编写自己的修改来实现这一目标。

2 个答案:

答案 0 :(得分:1)

ActiveMQ是一个JMS 1.1客户端/代理实现,因此没有API可以批量传递消息,异步侦听器一次一个地调度它们。客户端确实预取了多条消息,因此使用异步侦听器处理它们的开销非常低。

答案 1 :(得分:0)

您可以通过将每条消息放入缓冲区并仅在缓冲区包含N条消息时进行处理来实现目标。为了使其工作,您需要使用确认模式,例如CLIENT_ACKNOWLEDGE,它允许您在处理之前不会确认缓冲区中的消息;这样,如果您的客户端在其内存中崩溃了一些消息,那么当客户端重新启动时,它们将被重新传送。