gpt4 book ai didi

spring - "jmsListenerContainerFactory"是 SimpleJmsListenerEndpoint 使用的默认工厂

转载 作者:行者123 更新时间:2023-12-04 18:05:50 25 4
gpt4 key购买 nike

我正在使用 Spring JMS 4.1 注册消息监听器

在我的 xml 配置文件中,我定义了一个名为“jmsListenerContainerFactory”的 bean:

<bean id="jmsListenerContainerFactory"
class="org.springframework.jms.config.DefaultJmsListenerContainerFactory"...p:concurrency="3-5".../>
  • 第一个问题:对于 Spring 4.x 版本,这样声明这个工厂不是更好吗:<jms:listener-container ... />

  • 第二个也是主要问题:如官方文档 (24.6.1) 中所述:默认情况下,基础架构查找名为 jmsListenerContainerFactory 的 bean 作为工厂用于创建消息监听器容器的源。以这种方式以编程方式注册端点时是否也是这种情况:

.

SimpleJmsListenerEndpoint endpoint = new SimpleJmsListenerEndpoint();
endpoint.setDestination("...");
endpoint.setMessageListener(message -> {...});
registrar.registerEndpoint(endpoint);

或者我们是否必须以这种方式明确设置它,例如:registrar.setContainerFactoryBeanName("jmsListenerContainerFactory");

谢谢

最佳答案

我不明白你的第一个问题;在第一种情况下,您正在定义 DefaultJmsListenerContainerFactory(创建监听器容器的工厂),而 XML 直接创建监听器容器。

如果您需要创建大量具有相似属性的容器,则工厂很有用。

对于简单的容器配置,当您不使用带注释的监听器时,使用传统的 XML 或容器的 @Bean 定义肯定会更简单。

对于第二个问题,默认的registrar在传入configureListeners方法时已经填充了容器工厂bean的名称;你不必设置它。

关于spring - "jmsListenerContainerFactory"是 SimpleJmsListenerEndpoint 使用的默认工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26884139/

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