简体   繁体   中英

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

So I've been trying to find out solution to this from long ! Any insights would help !

I am getting following error

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'

Code snippet

 @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-library/

Referred multiple articles on this issue (also on StackoverFlow), also tried disabling sleuth but didn't help !

Any clue ?

Your method signatures are looking for 'ActiveMQConnectionFactory'-- that is tightly coupled to ActiveMQ. Most likely, the intetion is to couple to JMS API instead. Change code to use javax.jms.ConnectionFactory instead. (ActiveMQConnectionFactory implements javax.jms.ConnectionFactory)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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