sách gpt4 ai đã đi

spring - 使用 spring 集成自动配置 ActiveMQ

In lại 作者:行者123 更新时间:2023-12-04 14:13:09 29 4
mua khóa gpt4 Nike

在当前版本中,spring boot 还可以在检测到 ActiveMQ 在类路径上可用时配置 ConnectionFactory。如果存在代理,则会自动启动和配置嵌入式代理。

这在使用 JMSTemplate 时似乎是正确的。如果我想使用 spring 集成自动配置,那么不幸的是这不起作用。 ActiveMQ 似乎是在 spring 集成之后配置的。 Spring boot 报告缺少连接工厂的错误。
为此,我正在使用 spring boot 版本 1.1.4 和最新版本的 spring 集成。

我从 spring boot 得到这个堆栈跟踪:

2014-08-08 09:24:21.050 ERROR 6728 --- [ main]    
o.s.boot.SpringApplication : Application startup failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'org.springframework.integration.jms.JmsSendingMessageHandler#0':
Cannot create inner bean '(inner bean)#54930080' of type
[org.springframework.integration.jms.DynamicJmsTemplate] while setting constructor
argument; nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name '(inner bean)#54930080': Cannot resolve reference to
bean 'connectionFactory' while setting bean property 'connectionFactory'; nested
exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean
named 'connectionFactory' is defined
at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(
BeanDefinitionValueResolver.java:290)
at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.
resolveValueIfNecessary(BeanDefinitionValueResolver.java:129)

对我来说,就 spring 集成和 jms 模板而言,spring boot 自动配置中的依赖项似乎不正确。
标准 JMS 自动配置如下所示:
@ConditionalOnClass(JmsTemplate.class)
@ConditionalOnBean(ConnectionFactory.class)
@EnableConfigurationProperties(JmsProperties.class)
@AutoConfigureAfter({ HornetQAutoConfiguration.class,
ActiveMQAutoConfiguration.class })
public class JmsAutoConfiguration

Spring 集成如下所示:
@Cấu hình
@ConditionalOnClass(EnableIntegration.class)
@AutoConfigureAfter(JmxAutoConfiguration.class)
public class IntegrationAutoConfiguration {

spring 集成创建的关于连接工厂和事件 mq 的动态 jms 模板不应该至少有某种自动配置。考虑到 spring boot ref docs,我希望使用 jms 进行正确的自动配置以进行 spring 集成?

1 Câu trả lời

好的,我知道了。这是一个错误(我认为)。

ActiveMQConnectionFactoryConfiguration创建一个名为“jmsConnectionFactory”的 bean,但查看您的堆栈跟踪(上图)Spring Integration 正在寻找要命名的 bean:“connectionFactory”

biên tập: INT-3941Mở

Giải pháp:

@Cấu hình
public static class SpringBootVsIntegraionWorkaround {
@Autowired
GenericApplicationContext genericApplicationContext;

@PostXây dựng
public void init() {
genericApplicationContext.registerAlias("jmsConnectionFactory", "connectionFactory");
}
}

关于spring - 使用 spring 集成自动配置 ActiveMQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25193079/

29 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com