Apache Camel JMS使用Spring连接到QueueConnectionFactory

时间:2014-03-14 12:54:06

标签: jms apache-camel spring-jms

我正在查看Apache Camel Jms连接的各种示例,并试图弄清楚我是否可以 将QueueConnectionFactory中的自定义Jms提供程序连接到我的JmsComponent?

所以我想通过jndi查找队列名称 但我有自定义QueueConnectionFactory来创建连接 然后从那个电话createQueueSession

我的sudo代码如下:

<bean id="customQueueConnectionFactory" class="QueueConnectionFactoryImpl"/>

<bean id="authenticatedConnectionFactory" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
  <property name="targetConnectionFactory" ref="customQueueConnectionFactory"/>
  <property name="username" value="username"/>
  <property name="password" value="password"/>
</bean>


<bean id="jms" class="org.apache.camel.component.jms.JmsComponent"> 
  <property name="connectionFactory" ref="authenticatedConnectionFactory"/> 
</bean>

这是失败的,因为它不是在QueueConnectionFactory中连接的正确方法。

QueueConnectionFactoryImpl.createConnection(Ljava/lang/String;Ljava/lang/String;)Ljavax/jms/Connection;
    at org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter.doCreateConnection(UserCredentialsConnectionFactoryAdapter.java:175)
    at org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter.createConnection(UserCredentialsConnectionFactoryAdapter.java:150)
    at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:184)
    at org.springframework.jms.listener.AbstractJmsListeningContainer.createSharedConnection(AbstractJmsListeningContainer.java:405)
    at org.springframework.jms.listener.AbstractJmsListeningContainer.establishSharedConnection(AbstractJmsListeningContainer.java:373)
    at org.springframework.jms.listener.DefaultMessageListenerContainer.establishSharedConnection(DefaultMessageListenerContainer.java:767)
    at org.springframework.jms.listener.AbstractJmsListeningContainer.doStart(AbstractJmsListeningContainer.java:280)
    at org.springframework.jms.listener.AbstractJmsListeningContainer.start(AbstractJmsListeningContainer.java:265)
    at org.springframework.jms.listener.DefaultMessageListenerContainer.start(DefaultMessageListenerContainer.java:568)
    at org.apache.camel.component.jms.JmsConsumer.startListenerContainer(JmsConsumer.java:105)
    at org.apache.camel.component.jms.JmsConsumer.prepareAndStartListenerContainer(JmsConsumer.java:171)
    at org.apache.camel.component.jms.JmsConsumer.doStart(JmsConsumer.java:155)

任何提示?我正在使用Spring版本3.2.4&amp; Apache Camel版本2.12.2

1 个答案:

答案 0 :(得分:0)

camel-jms使用Spring JMS,所以你只需将Spring方式连接起来。乍一看你的春天&lt;豆>看起来没关系。

请记住使用“jms”作为Camel中的组件名称,因为这是您为组件提供的ID。