jmsListenerContainerFactory问题

时间:2018-10-13 00:07:54

标签: java spring spring-boot solace

我有一个Java应用程序,需要在其中连接到多个(3)系统以从队列中读取消息。 我在applicationContext文件中使用Spring框架。

我正在跟踪runtimeError:

"Parameter 1 of method jmsListenerContainerFactory in ... required a single bean, but 3 were found"

我尝试在applicationContext文件的CachedContainerFactory bean级别上使用scope =“ prototype”,但是没有运气。

不确定如何解决此问题。

谢谢。

1 个答案:

答案 0 :(得分:0)

我无法重现您的错误,但是我可以使用多个连接工厂而不会出现问题。具体来说,我使用CachingConnectionFactory-如您所述,我不知道有任何CachedContainerFactory。这是2个VPN的XML配置示例:

<bean autowire="default" class="org.springframework.jndi.JndiTemplate" id="v1Template" lazy-init="default">
    <property name="environment">
        <map>
            <entry key="java.naming.provider.url" value="smf://192.168.65.3:55555"/>
            <entry key="java.naming.factory.initial" value="com.solacesystems.jndi.SolJNDIInitialContextFactory"/>
            <entry key="java.naming.security.principal" value="default@v1"/>
        </map>
    </property>
</bean>

<bean autowire="default" class="org.springframework.jndi.JndiTemplate" id="v2Template" lazy-init="default">
    <property name="environment">
        <map>
            <entry key="java.naming.provider.url" value="smf://192.168.65.3:55555"/>
            <entry key="java.naming.factory.initial" value="com.solacesystems.jndi.SolJNDIInitialContextFactory"/>
            <entry key="java.naming.security.principal" value="default@v2"/>
        </map>
    </property>
</bean>

<bean autowire="default" class="org.springframework.jndi.JndiObjectFactoryBean" id="v1cf" lazy-init="default">
    <property name="jndiTemplate" ref="v1Template"/>
    <property name="jndiName" value="cf"/>
</bean>

<bean autowire="default" class="org.springframework.jndi.JndiObjectFactoryBean" id="v2cf" lazy-init="default">
    <property name="jndiTemplate" ref="v2Template"/>
    <property name="jndiName" value="cf"/>
</bean>

<bean class="org.springframework.jms.connection.CachingConnectionFactory" id="v1ccf">
    <property name="targetConnectionFactory" ref="v1cf"/>
    <property name="sessionCacheSize" value="10"/>
</bean>

<bean class="org.springframework.jms.connection.CachingConnectionFactory" id="v2ccf">
    <property name="targetConnectionFactory" ref="v2cf"/>
    <property name="sessionCacheSize" value="10"/>
</bean>

有关其他配置属性(如果使用Spring XML配置连接到Solace),请参阅integration guide

在另一则帖子NoUniqueBeanDefinitionException in Spring annotation driven configuration中也提到了类似的问题。