如何在运行时 enable/disable JMS 侦听器?我可以在运行时创建一个 api which enables/disables 侦听器吗?

How to enable/disable JMS listener on runtime? Can I create one api which enables/disables listener on runtime?

我正在解决一个问题,我需要在运行时 enable/disable JMS 侦听器(无需重新启动应用程序)。我想创建一个将被手动点击的休息服务,它必须在运行时关闭 on/turn 监听器。

如果您可以控制您的处理模型 (synchronous/asynchronous),您可以选择使用同步获取消息:MessageConusmer.receive(long timeout) 然后,您只需在 'logged out' 时停止拨打此电话,并在登录时开始拨打此电话。

如果你被迫使用异步。接收(使用 onMessage() )那么你的接收将连续接收消息,除非你用 Session.close() 停止会话。要重新启动,您必须重新创建并重新启动会话并重新创建您的 MessageConsumer

您应该提供有关您如何使用该框架的更多信息。假设您的意思是 @JmsListener,您可以使用注册表 stop/start 侦听器容器...

@JmsListener(id = "foo")
...

@Autowired
private JmsListenerEndpointRegistry registry;

...

    registry.getListenerContainer("foo").stop();
...
    registry.getListenerContainer("foo").start();