功能完成后消耗ActiveMQ消息

问题描述 投票:0回答:1

使用MessageListener从队列中使用消息后,不会立即从队列中获取另一条消息。它正在等待,直到我的功能完成,然后队列中又出现另一条消息。如何不依赖我的功能而从队列中快速获取消息。

jms activemq consumer
1个回答
0
投票

推测onMessage()实现的MessageListener方法正在执行您的所有“功能”,这就是消息消耗比您想要的慢的原因,因为在消耗另一条消息之前必须先完成onMessage()

有多种方法可以解决此问题(无特定顺序):

  • 将Jave EE应用程序服务器与MDB一起使用。 MDB被合并,因此它们可以同时处理多个消息。
  • 使用可以同时使用消息的Spring JMS的DefaultMessageListenerContainer
  • 使用诸如MessageListener之类的库来实现自己的Apache Commons Pool池。
  • [MessageListener收到消息时,请从线程池中获取线程并在该线程中处理消息,以使MessageListener可以更快地接收消息。我用这种方法看到的唯一真正的问题是它限制了您确认消息的方式。简而言之,您应该确认消息[[before传递给新线程。
© www.soinside.com 2019 - 2024. All rights reserved.