【问题标题】:Multiple Connection Factories多个连接工厂
【发布时间】:2015-05-20 16:59:50
【问题描述】:

我正在使用 spring boot 并设置多个连接工厂(池化和 jms)。我遇到的问题是它似乎试图将它们自动连接到 javax.jms.ConnectionFactory 中的同一个对象。所以它导致了这个异常:

Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private javax.jms.ConnectionFactory org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration.connectionFactory; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [javax.jms.ConnectionFactory] is defined: expected single matching bean but found 2: jmsConnectionFactory,pooledConnectionFactory
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:561)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
... 38 more
Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [javax.jms.ConnectionFactory] is defined: expected single matching bean but found 2: jmsConnectionFactory,pooledConnectionFactory
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1054)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:942)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:533)
... 40 more

这是我正在使用的配置:

<bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
   <property name="brokerURL" value="***" />
</bean>
 <bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" init-method="start" destroy-method="stop">
   <property name="maxConnections" value="10" />
   <property name="connectionFactory" ref="jmsConnectionFactory" />
</bean>
<bean id="jmsConfig" 
   class="org.apache.camel.component.jms.JmsConfiguration">
   <property name="connectionFactory" ref="pooledConnectionFactory"/>
   <property name="acknowledgementModeName" value="CLIENT_ACKNOWLEDGE"/>     
   <property name="concurrentConsumers" value="11"/> 
   <property name="maxConcurrentConsumers" value="11"/> 
</bean>  
<bean id="activemq" 
    class="org.apache.activemq.camel.component.ActiveMQComponent">
    <property name="configuration" ref="jmsConfig"/>
</bean>

我假设问题是这两个类都实现了 javax.jms.ConnectionFactory 类,然后它们通过 org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration 中的 ConnectionFactory 自动装配。我是否在这里遗漏了什么,任何帮助将不胜感激?

【问题讨论】:

    标签: java spring apache-camel activemq javabeans


    【解决方案1】:

    您可以在其中一个连接工厂 bean 上设置 primary=true

    【讨论】:

      猜你喜欢
      • 2011-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-29
      • 2017-03-13
      • 1970-01-01
      • 2019-03-27
      • 1970-01-01
      相关资源
      最近更新 更多