关于Mule 3.3 CE:
即使我有一个异步的“单向”交换模式,它在我的真实响应之前向调用者回复两次“空”消息。所以我得到了三个回复。前两个只是空的“废话”,然后我得到了我的真实回复。
我可以禁用前两个“空”响应,只是将我的真实响应回到我应该回复的位置。调用者为我的流的响应设置TEMP队列。 (现在它在响应队列上得到三个响应。)
我们是否需要改变ActiveMQ中的行为?截至目前,它是默认的。
<jms:activemq-connector name="Active_MQ_Staging" brokerURL="tcp://xxx.xxx.xxx.x:yyyy" validateConnections="true" maxRedelivery="2" doc:name="Active MQ" forceJndiDestinations="true" honorQosHeaders="true" specification="1.1" disableTemporaryReplyToDestinations="true"/>
<flow name="MyFlow2" doc:name="MyFlow2">
<jms:inbound-endpoint queue="myQueue" connector-ref="Active_MQ_Staging" doc:name="JMS" exchange-pattern="one-way"/>
<all doc:name="All">
<processor-chain>
<jms:outbound-endpoint queue="${queue.mule.levinforequest}" disableTemporaryReplyToDestinations="true" connector-ref="Active_MQ_Staging" doc:name="JMS"/>
</processor-chain>
<processor-chain>
<logger message="Leaving AppFacade" level="INFO" doc:name="Logger"/>
</processor-chain>
</all>
....
编辑: 好的,我没有在上面的陈述中发布所有内容。
这是我们想要做的: Mule-app将收到JMS消息。发件人(如果我是正确的,它是一个无状态的EJB MDB)将设置一些我需要携带的属性,我将添加一些属性。发件人给我一个响应的临时队列设置的名称(mule-app(在另一个流程中)将在几个其他步骤和其他集成之后响应)。第一个mule-flow我设置为“单向”,因为我不希望它响应。
此第一个流将消息放在另一个JMS队列上。然后另一个Mule-app(和muleflow)接收消息(单向)并将其转换为另一种格式并将其放在另一个队列中。也许这对你没有意义,但在我们的环境中确实如此。 ;-)然后在收到“第三方”的回复后,第二个Mule-app收到响应并将JMS消息转换为我们自己的格式(我们仍然拥有属性)。现在将其发送到第一个Mule-app(和第二个流)(或其他任何人)可以获取消息的主题。不,我们想要回应来电者。我们有关于谁发送请求以及他想要响应的队列的属性。因此,所有4个骡子流(在2个不同的mule-apps中)都设置为“单向”,因为我们希望它是异步的而不是直接响应,因为路上有几个步骤(和队列)。
因此我们实际流程从流程1流向流程3,然后在流程4中获得响应,然后返回流程2到呼叫者。
So Flow1-&gt; Flow3-&gt; Flow4-&gt; Flow2
骡-APP1:
初级流瑜伽: 来电 - &gt;队列 - &gt; MuleFlow(单向) - &gt;队列
中级课程: 主题 - &gt; MuleFlow(单向) - &gt;响应临时队列
骡-App2的
FLOW3: 队列 - &gt; Muleflow(单向) - &gt;变换 - &gt;队列 - &gt;外部部分
Flow4: 外部部分 - &gt; Queue-&GT; MuleFlow(单向) - &gt;变换 - &gt;主题
我希望你能跟着我。
我想Mule Studio已将那些“处理器链”放在那里。记录只是“记录”。我想知道什么时候离开Flow1等等。仅用于日志/调试。
感谢您在这件事上的考虑。
/ Z
答案 0 :(得分:0)
我不完全明白你在这做什么。
记录器未从消息中记录任何内容。我认为没有必要全部使用,你可以这样做:
<jms:outbound-endpoint queue="${queue.mule.levinforequest}" disableTemporaryReplyToDestinations="true" connector-ref="Active_MQ_Staging" doc:name="JMS"/>
<logger message="Leaving AppFacade" level="INFO" doc:name="Logger"/>
我也没有看到处理器链的需要,这可能会触发错误。尽量不要使用它们。
如果我发现它错了,你可以发现Ricston module中的 ignore-reply-all 可以帮助你。