带有ActiveMQ的Spring JMS:如何异步读取选择性消息

时间:2013-09-06 19:08:43

标签: activemq spring-jms

我使用Spring JMS和ActiveMQ作为代理并在Tomcat上运行应用程序。我已经看到许多使用receiveSelected(..)与指定的消息选择器同步接收消息的示例。但是我找不到任何方法来动态指定jms:listener-container上的消息选择器来异步接收消息。选择器仅在运行时才知道。

我能想到的唯一方法是使用DefaultMessageListenerContainer,并在每次需要新选择器时创建一个新实例。但我不确定这是否是正确的做法和最佳做法。例如,是否应该缓存与选择器关联的listenerContainer?什么时候应该关机等?

如果有人能指出我的例子或概述处理这种情况的策略,我将非常感激。

提前致谢!

1 个答案:

答案 0 :(得分:1)

您无法在容器运行时更​​改选择器(您可以,但只有新的侦听器线程才会使用它)。您可以停止容器,修改选择器以包含新条件,然后再次启动容器。