请求 - 回复范围与请求 - 响应交换模式

时间:2015-05-08 04:35:49

标签: mule messaging

我试图理解request-reply scope的用例何时优先于request-response exchange pattern ?,特别是如果底层传输是JMS,我猜测使用交换模式或范围将从流程的角度来看内部和功能完全相同的事情。

使用请求 - 回复范围围绕维护关联ID和replyTo属性详细信息herehere会产生一些麻烦,如果使用请求 - 响应,是否存在相同的挑战交换模式? (我猜是的,请有人确认一下)

基本上何时通过请求 - 响应交换模式使用请求 - 回复

更新我的问题以进一步探究请求回复范围的行为。

在接受的答案中提到的第一个用例中尝试使用请求 - 回复范围。

用例1

  

端点本身不支持请求响应,但仍然是您   想要模拟同步性

我创建了一个如下所示的流程,我已经在没有消息属性转换器的情况下测试了它(相同的行为)

Request-reply use case

实际的行为是请求永远等待,即使文件成功写入后,回复也永远不会进入出站虚拟机

我的流程代码如下

<flow name="request-replyflowtest">
        <http:listener config-ref="Orders_HTTP_Listener_Configuration" path="/rr" doc:name="request-reply-test"/>
        <set-payload value="Hello world" doc:name="Set Payload"/>
        <message-properties-transformer overwrite="true" doc:name="Message Properties" >
            <add-message-property key="MULE_REPLYTO" value="vm://back"/>
             <add-message-property key="MULE_CORRELATION_ID" value="#[java.util.UUID.randomUUID().toString()]"/>
        </message-properties-transformer>
        <request-reply doc:name="Request-Reply">
            <file:outbound-endpoint path="C:\Users\sudarshan.sreenivasan\Desktop" outputPattern="hello.txt" responseTimeout="10000" doc:name="File"/>
            <vm:inbound-endpoint exchange-pattern="one-way" path="back" doc:name="VM"/>
        </request-reply>
         <logger message="response not written out" level="INFO" doc:name="Logger"/>
        <set-payload value="This is from a different flow" doc:name="Set Payload"/>
    </flow>

1 个答案:

答案 0 :(得分:4)

基本上你应该在大多数情况下寻求请求 - 响应,除非在以下情况下:

  • 端点本身不支持请求响应,但您仍想模拟同步性
  • 您希望向一种传输发送请求并期望在不同的传输上响应,即:发送到jms期望响应amqp
  • 您希望向一个连接器发送请求并期望在不同的连接器上响应,即:向jms连接器发送期望响应jms连接器b