2015-09-16 2 views
0

Я использую Mule ESB для разработки процесса, посредством которого можно публиковать сообщение в теме. Подписчики будут прослушивать тему и получать сообщения. Каждый абонент будет действовать по сообщениям по-разному. Целью здесь является возможность опубликовать тестовое сообщение по теме из HTTP для тестирования подписчиков.Mule JMS Тема и конфигурация ActiveMQ

Вот как я соединение JMS настроен:

<!-- JMS Topic connector --> 
<jms:activemq-connector name="jmsTopicConnection" specification="1.1" brokerURL="tcp://localhost:61616" validateConnections="true" doc:name="Active MQ2" durable="true" numberOfConcurrentTransactedReceivers="2"/> 

Это поток:

<flow name="auditJMSServiceFlow"> 
<http:listener config-ref="HTTP" path="/Audit/Activity" responseStreamingMode="ALWAYS" doc:name="HTTP"/> 
<set-variable variableName="#['id']" value="#[message.inboundProperties['id']]" doc:name="set dynamic id"/> 
<set-payload value="===TOPIC===" doc:name="Set Payload" /> 

<request-reply storePrefix="mainFlow"> 
<jms:inbound-endpoint topic="Audit.Activity" connector-ref="jmsTopicConnection" doc:name="JMS Topic Audit.Activity" exchange-pattern="request-response" durableName="audit_activity"> 
    <jms:transaction action="ALWAYS_BEGIN" /> 
    <!-- Not required to explicitly have this element. Mule will put this in implicitly. --> 
    <!-- <jms:jmsmessage-to-object-transformer displayName="JmsMsg to Object"/> --> 
</jms:inbound-endpoint> 
</request-reply> 

<json:object-to-json-transformer doc:name="transform JMS message to JSON"/> 
<json:validate-schema schemaLocation="resource://AuditMsgSchema.json" doc:name="Validate Json Schema"/> 
<component class="com.baml.panther.audit.service.impl.AuditServiceImpl" doc:name="Java"/> 


<default-exception-strategy> 
    <commit-transaction exception-pattern="com.foo.ExpectedExceptionType"/> 
    <jms:outbound-endpoint queue="dead.letter" connector-ref="jmsConnection"> 
     <jms:transaction action="JOIN_IF_POSSIBLE" /> 
    </jms:outbound-endpoint> 
</default-exception-strategy> 

<logger message="=== #[message.payload] received #[org.mule.util.DateUtiles.getTimeStamp('dd-MM-yyyy_HH-mm-ss.SSS')]" level="INFO" doc:name="Logger"/> 

Когда я бегу через испытание, я получаю следующее сообщение об ошибке:

enter image description here

Любые предложения были бы весьма полезными.

Russ

ответ

0

Ошибка: у вашего request-reply области отсутствует конечная точка исходящего сообщения. У вас есть только входящая-конечная точка (jms: входящая-конечная точка). Вам также необходимо указать исходящую конечную точку.

<request-reply storePrefix="mainFlow"> 
<jms:inbound-endpoint topic="Audit.Activity" connector-ref="jmsTopicConnection" doc:name="JMS Topic Audit.Activity" exchange-pattern="request-response" durableName="audit_activity"> 
    <jms:transaction action="ALWAYS_BEGIN" /> 
    <!-- Not required to explicitly have this element. Mule will put this in implicitly. --> 
    <!-- <jms:jmsmessage-to-object-transformer displayName="JmsMsg to Object"/> --> 
</jms:inbound-endpoint> 
</request-reply> 

Не уверен, что ваша цель есть, но если вы поставите только jms:outbound-enpoint (вместо всего запроса ответа блок), вы можете отправить сообщение в тему JMS.

+0

Похоже, @Ale ответил то же самое в одно и то же время. –

+0

Спасибо! Это именно то, чего я хотел. Простая запись в тему. Единственная причина, по которой HTTP-часть, я могу написать тест. Окончательный проект будет иметь тему JMS, чтобы начать процесс, как только закончу дизайн. – rray

0

Проблема заключается в том, что вы не можете поместить источник сообщения в качестве первого процессора сообщения в запрос-ответ. Ответ на запрос позволяет вам как бы синхронный вызов для асинхронных протоколов, таких как JMS. Если вы хотите отправить сообщение брокеру сообщения в том месте, где вы положили запрос-ответ, просто введите конечную точку JMS. Если вы хотите использовать сообщение из темы JMS, вы должны поместить входящую конечную точку JMS в качестве первого процессора сообщений в потоке.

+0

Спасибо! Я удалил блок request-reply вместе. @ Тайрон дал мне направление, в котором я нуждался. – rray

Смежные вопросы