繁体   English   中英

...factory.UnsatisfiedDependencyException 实际上是“org.springframework.cloud.sleuth.instrument.messaging.LazyTopicConnectionFactory”类型

[英]...factory.UnsatisfiedDependencyException actually of type 'org.springframework.cloud.sleuth.instrument.messaging.LazyTopicConnectionFactory'

所以我一直在努力寻找解决这个问题的方法! 任何见解都会有所帮助!

我收到以下错误

org.springframework.beans.factory.UnsatisfiedDependencyException: 

Error creating bean with name 

'routerConnectionFactory' defined in class path resource 

[com/CONFIDENTIAL/event/processor/configuration/EventsConfiguration.class]: Unsatisfied dependency expressed through method 'routerConnectionFactory' parameter 0; nested exception is 

org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 

'actionRouterConnectionFactory' is expected to be of type 'org.apache.activemq.ActiveMQConnectionFactory' but

 was actually of type 'org.springframework.cloud.sleuth.instrument.messaging.LazyTopicConnectionFactory'

代码片段

 @Bean(name = "routerConnectionFactory")
    @Primary
    public CachingConnectionFactory routerConnectionFactory(ActiveMQConnectionFactory actionRouterConnectionFactory ){
        CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory();
        cachingConnectionFactory.setTargetConnectionFactory(actionRouterConnectionFactory);
        return  cachingConnectionFactory;

    }

    @Bean
    public ActiveMQConnectionFactory actionRouterConnectionFactory(
            @Value("${confidential.gateway.message.broker.url}") String brokerURL,
            @Value("${confidential.router.message.broker.user.name}") String userName,
            @Value("${confidential.router.message.broker.user.password}") String password,
            @Value("true") Boolean alwaysSyncSend, RedeliveryPolicy defaultEntry,
            @Value("${shared.amq.keystore.path:#{null}}") String keyStorePath,
            @Value("${shared.amq.keystore.password:#{null}}") String keyStorePassword) throws Exception {
        ActiveMQSslConnectionFactory targetConnectionFactory= new ActiveMQSslConnectionFactory();
        targetConnectionFactory.setBrokerURL(brokerURL);
        targetConnectionFactory.setUserName(userName);
        targetConnectionFactory.setPassword(password);
        if(!StringUtils.isEmpty(keyStorePath) && !StringUtils.isEmpty(keyStorePassword)){
            targetConnectionFactory.setTrustStore(keyStorePath);
            targetConnectionFactory.setTrustStorePassword(keyStorePassword);
        }
        targetConnectionFactory.setAlwaysSyncSend(alwaysSyncSend);
        targetConnectionFactory.setRedeliveryPolicy(defaultEntry);
        return targetConnectionFactory;
    }


spring-cloud-sleuth-core : 2.2.6.RELEASE
spring-cloud-sleuth-zipkin : 2.2.6.RELEASE
active-mq-broker, active-mq-camel, client, jms-pool , open-wire-legacy, pool, spring : 5.15.13
other spring boot and related dependencies : 2.2.6.RELEASE

https://edwin.baculsoft.com/2019/07/error-overriding-bean-of-same-name-declared-in-class-path-resource-when-integrating-spring-cloud-sleuth-and-activemq-图书馆/

参考了有关此问题的多篇文章(也在 StackoverFlow 上),还尝试禁用 sleuth 但没有帮助!

有什么线索吗?

您的方法签名正在寻找与 ActiveMQ 紧密耦合的“ActiveMQConnectionFactory”。 最有可能的是,意图是耦合到 JMS API。 更改代码以改用 javax.jms.ConnectionFactory。 (ActiveMQConnectionFactory 实现 javax.jms.ConnectionFactory)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM