ActiveMQ请求-应答超时

ActiveMQ请求-应答超时,activemq,apache-camel,Activemq,Apache Camel,我有一个activeMQ问题,我从Camel应用程序向远程代理发送请求。请参阅下面的配置: <bean id="providerJMSConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="alwaysSessionAsync" value="false"/> <property name="alwaysSyncSend" va

我有一个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队列时,我意识到Response消息从未被拾取。即使我已经要求响应消息在那里排队,但它仍然保留在消息中,这实际上已经完成了

我的问题是,为什么骆驼会拒绝从队列中获取此消息? 请注意,Exchange模式被显式设置为InOut

我注意到它说CorrelationID不一样,尽管我检查了JMSCorrelationID中的请求和响应,它们在我看来是一样的


是否有其他选择器可用于匹配JMS请求/应答?

而不是使用try。如果省略URI上的replyTo参数,Camel将创建一个仅用于该响应的临时队列。

能否通过JMX将jconsole或visualvm连接到该ActiveMQ实例,请浏览队列,并将其中一条消息的副本粘贴到此线程中?BooleanProperties:ByteProperties DoubleProperties FloatProperties IntProperties JMS Correlation ID:ID-WEBESBSTAGING-3245-1321373681481-1-51 JMSDeliveryMode:PERSISTENT JMSDDestination:queue://aeroReply JMSExpiration:0 JMSMessageID:ID:TestESB-1233-1321373526837-24:1:18:254:1 JMSPriority:9 JMSRepelived:false JMSReplyTo:queue://reply JMSTimestamp:11月15日星期二20:02:40 GMT+2011年1:00 JMSType:null JMSXGroupID:null JMSXGroupSeq:0 LongProperties:OriginalDestination:PropertiesText:ShortProperties:StringProperties:Text: