如何在运行时启用/禁用 JMS 侦听器?我可以创建一个在运行时启用/禁用侦听器的 API 吗?



我正在解决一个问题,我需要在运行时启用/禁用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

最新更新