2016-05-05 1 views
0

Я хотел получить все сообщения в очереди с надежным подписчиком темы между потоком мула. Я попытался использовать Mule-реквестер, но для JMS inbount долговечного подписчика темы мы должны доказать атрибут «durableName». Он отлично работает с входящей конечной точкой, но не может понять, как назвать это между выполнением потока. Пожалуйста, найдите код нижеПолучите все сообщение в очереди на длительную тему подписчика между потоком мула

<jms:activemq-connector name="Active_MQ" clientId="xyz-001" password="admin" brokerURL="tcp://localhost:61616" validateConnections="true" doc:name="Active MQ" persistentDelivery="true"/> 
<mulerequester:config name="Mule_Requester" doc:name="Mule Requester"/> 
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/> 
<flow name="activemqtestFlow1"> 
    <http:listener config-ref="HTTP_Listener_Configuration" path="/getTopicMessages" doc:name="HTTP"/> 
    <mulerequester:request-collection config-ref="Mule_Requester" resource="jms://testTopic?connector=Active_MQ" doc:name="Mule Requester"/> 
    <foreach doc:name="For Each"> 
     <logger message="subscriber two pay load" level="INFO" doc:name="Logger"/> 
    </foreach> 
</flow> 

После потока хорошо работает, но я хочу, чтобы достичь между мулом вызова потока для JMS темы,

<flow name="activemqtestFlow1"> 
    <jms:inbound-endpoint connector-ref="Active_MQ" doc:name="JMS" topic="testTopic" durableName="xyz-001"> 
      <jms:transaction action="NONE"/> 
    </jms:inbound-endpoint> 
    <logger message="#[payload]" level="INFO" doc:name="Logger"/> 
</flow> 

Просьбы предложить обходной путь для этого.

+0

Вы можете использовать компонент Java и отправки всех сообщений из очереди –

ответ

0

Прочный подписчик темы для запрашивающего мула может быть достигнут путем создания общей конечной точки и передачи через нее тем или иным темам, прочным свойствам durableName.

Исходя из этого подхода, студия покажет ошибки проверки при использовании элемента свойств, который нам нужно игнорировать и развернуть приложение.

Endpoint будет как

<endpoint name="durablesubscriberEndpoint" connector-ref="Active_MQ" address="jms://testTopic" doc:name="Generic"> 
    <property value="true" key="durable"/> 
    <property value="subscriber-name" key="durableName"/> 
    <property value="true" key="topic"/> 
</endpoint> 

И мул запрашивающая можно назвать

<mulerequester:request-collection config-ref="Mule_Requester" resource="durablesubscriberEndpoint" doc:name="Mule Requester"/> 

Он работает как шарм ... !!

Другой способ сделать его более универсальным и динамичным можно использовать следующие

<set-variable variableName="resource" value="jms://#[message.inboundProperties.activeMQTopic]?connector=Active_MQ&amp;durable=true&amp;durableName=#[message.inboundProperties.'subscriber-name']&amp;topic=true" doc:name="Variable"/> 
<mulerequester:request-collection doc:name="Mule Requester" config-ref="Mule_Requester" resource="#[flowVars.resource]"/> 
Смежные вопросы