gpt4 book ai didi

jms - 如何在启动时以编程方式禁用 Spring @JmsListener

转载 作者:行者123 更新时间:2023-12-04 19:53:52 24 4
gpt4 key购买 nike

我有一个 Spring 应用程序,它具有用 Spring 的 @JmsListener 注释的方法。该应用程序部署在多个节点上。在某些特定节点上,我需要禁用 JMS 监听器,以便它不会将消息从队列中拉出。

似乎有一种方法可以在应用程序启动后停止监听器。但这似乎在启动和禁用代码运行之间打开了简短的窗口,应用程序实例可能会使用消息。因此,有一种方法可以在应用程序启动期间禁用监听器。

最佳答案

您需要自定义由注解创建的监听器容器定义。

添加监听容器工厂 @Bean (见 the documentation)并设置 autoStartup属性(property)到false .

setAutoStartup(false);

然后,您可以根据需要通过 JmsListenerEndpointRegistry 获取引用来启动每个容器。 bean 角,扁 bean 。容器本身不是bean - 从它的javadoc ...
...
* <p>Contrary to {@link MessageListenerContainer}s created manually, listener
* containers managed by registry are not beans in the application context and
* are not candidates for autowiring. Use {@link #getListenerContainers()} if
* you need to access this registry's listener containers for management purposes.
* If you need to access to a specific message listener container, use
* {@link #getListenerContainer(String)} with the id of the endpoint.
...

关于jms - 如何在启动时以编程方式禁用 Spring @JmsListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32705545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com