Camel JMS запрос / Тайм-ауты ответа - PullRequest
2 голосов
/ 14 декабря 2010

Я пытаюсь отправить запрос / ответить на сообщение удаленному брокеру от верблюда, но время ожидания истекло. См. Конфигурацию ниже:

 <bean id="providerJMSConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
  <property name="alwaysSessionAsync" value="false"/>
  <property name="alwaysSyncSend" value="true"/>
  <property name="brokerURL"><value>${remote-broker-broker-url}</value></property>
  <property name="clientID" value=""/>
  <property name="closeTimeout" value="15000"/>
  <property name="copyMessageOnSend" value="true"/>
  <property name="disableTimeStampsByDefault" value="false"/>
  <property name="dispatchAsync" value="false"/>
  <property name="objectMessageSerializationDefered" value="false"/>
  <property name="optimizeAcknowledge" value="false"/>
  <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="providerJMSConfig" class="org.apache.camel.component.jms.JmsConfiguration">
  <property name="connectionFactory" ref="aeroProviderJMSConnectionFactory"/>
  <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="aeroProviderJMSConfig"/>  
 </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>
<osgi:camelContext>

Почему это происходит? На удаленном брокере я понял, что число потребителей всегда больше 1, хотя я не указал, сколько у него должно быть потребителей. Кроме того, когда я удалил адресат replyTo, имя удаленного посредника все еще продолжает появляться.

Pls, есть ли какой-нибудь инструмент, который я могу использовать для отладки activemq, чтобы я мог видеть, кто выбирает сообщения из очереди?

1 Ответ

2 голосов
/ 16 декабря 2010

При выполнении запроса / ответа через JMS с Camel используется тайм-аут по умолчанию 20 секунд.Это тот тайм-аут, который вы нажали?

Вы можете изменить его, это опция requestTimeout http://camel.apache.org/jms

...