我使用Spring JMS和ActiveMQ作为代理并在Tomcat上运行应用程序。我已经看到许多使用receiveSelected(..)与指定的消息选择器同步接收消息的示例。但是我找不到任何方法来动态指定jms:listener-container上的消息选择器来异步接收消息。选择器仅在运行时才知道。
我能想到的唯一方法是使用DefaultMessageListenerContainer,并在每次需要新选择器时创建一个新实例。但我不确定这是否是正确的做法和最佳做法。例如,是否应该缓存与选择器关联的listenerContainer?什么时候应该关机等?
如果有人能指出我的例子或概述处理这种情况的策略,我将非常感激。
提前致谢!
答案 0 :(得分:1)
您无法在容器运行时更改选择器(您可以,但只有新的侦听器线程才会使用它)。您可以停止容器,修改选择器以包含新条件,然后再次启动容器。