我正在查看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
答案 0 :(得分:0)
camel-jms使用Spring JMS,所以你只需将Spring方式连接起来。乍一看你的春天&lt;豆>看起来没关系。
请记住使用“jms”作为Camel中的组件名称,因为这是您为组件提供的ID。