我有这个activeMQ问题,我向远程代理发送请求(来自Camel应用程序)。请参阅下面的配置:
<bean id="providerJMSConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="alwaysSessionAsync" value="false"/>
<property name="alwaysSyncSend" value="true"/>
<property name="brokerURL"><value>${remote-broker-url}</value></property>
<property name="clientID" value=""/>
<property name="closeTimeout" value="150000"/>
<property name="copyMessageOnSend" value="true"/>
<property name="disableTimeStampsByDefault" value="false"/>
<property name="dispatchAsync" value="false"/>
<property name="objectMessageSerializationDefered" value="false"/>
<property name="optimizeAcknowledge" value="true"/>
<property name="optimizedMessageDispatch" value="true"/>
<property name="password" value=""/>
<property name="producerWindowSize" value="0"/>
<property name="statsEnabled" value="false"/>
<property name="useAsyncSend" value="false"/>
<property name="useCompression" value="false"/>
<property name="useRetroactiveConsumer" value="false"/>
<property name="userName" value=""/>
<property name="watchTopicAdvisories" value="true"/>
<property name="sendTimeout" value="0"/>
</bean>
<bean id="aeroProviderJMSConfig" class="org.apache.camel.component.jms.JmsConfiguration">
<property name="connectionFactory" ref="providerJMSConnectionFactory"/>
<property name="deliveryPersistent" value="true"/>
<property name="explicitQosEnabled" value="true"/>
<property name="priority" value="${jms-message-priority}"/>
<property name="acceptMessagesWhileStopping" value="false"/>
</bean>
<bean id="providerJMS" class="org.apache.camel.component.jms.JmsComponent">
<property name="configuration" ref="providerJMSConfig"/>
</bean>
<osgi:camelContext xmlns="http://camel.apache.org/schema/spring" trace="true">
<endpoint id="providerEndpoint" uri="providerJMS:queue:provider?replyTo=providerResponse&requestTimeout=120000"/>
<route>
<from .....>
<to ref="providerEndpoint"/>
....
</route>
每当我检查远程代理上的“providerResponse”队列时,我意识到永远不会接收到resposne消息。它仍然留在消息中,即使我已经要求响应消息在那里排队(实际上已经完成)。
我的问题是,为什么Camel拒绝从此队列中获取此消息? 请注意,Exchange模式已明确设置为InOut。
我注意到它说CorrelationID不一样,即使我检查请求的JMSCorrelationID和对我来说看起来一样的响应。
是否有可用于匹配JMS请求/回复响应的备用选择器?
答案 0 :(得分:0)
而不是使用<to ref="providerEndpoint"/>
尝试<inOut ref="providerEndpoint"/>
。如果省略URI上的replyTo参数,Camel将创建一个临时队列,仅用于该响应。