我正在解决一个问题,我需要在运行时启用/禁用JMS侦听器(无需重新启动应用程序(。我想创建一个将手动命中的休息服务,它必须在运行时打开/关闭侦听器。
您应该提供有关如何使用框架的更多信息。假设你的意思是@JmsListener
,你可以使用注册表来停止/启动侦听器容器......
@JmsListener(id = "foo")
...
@Autowired
private JmsListenerEndpointRegistry registry;
...
registry.getListenerContainer("foo").stop();
...
registry.getListenerContainer("foo").start();
如果您可以控制处理模型(同步/异步(,则可以选择使用同步获取消息:MessageConusmer.receive(long timeout)
然后,您只需在"注销"时停止进行此呼叫,并在登录时开始进行此呼叫。
如果您被迫使用 async. 接收(使用 onMessage(( (,那么您的接收将持续接收消息,除非您停止与Session.close()
的会话。要重新启动,您必须重新创建并重新启动会话,然后重新创建您的 MessageConsumer