骡子请求回复:在处理完所有流程后发送回复

时间:2014-05-22 08:30:23

标签: request mule flow reply

目前我正在和骡子一起工作。我有3个流程:RequestFlowServiceResponseSendResponse

Flow

在第一个流程中,我处理了请求(转换请求参数,将其写入wmq等)。仅供参考,此流程上的wmq只能用于写入。

在第二个流程中,我通过另一个wmq从服务器读取响应,将其转换为json,然后发送到VM。仅供参考,此流程上的wmq仅可用于阅读。

在第三个流程中,我尝试将响应发送回第一个流程并生成一个文件。

要将流3的响应发送回流1,我尝试使用request-reply

但是,不幸的是,当我尝试发送请求时,我发现了:

  1. 在第一个流程中到达请求 - 回复组件后,它将直接转到第三个流程。
  2. 然后,在mule处理完第三个流程的所有操作后,它会将响应发送回请求 - 回复组件。
  3. 执行一些日志记录(第一次流程中的记录器组件)
  4. 然后,转到流程,处理所有操作
  5. 再次处理第三个流程
  6. 这就是为什么在完成整个过程之后,我的申请将会:

    1. 生成2个文件(1个包含请求xml,1个包含json响应)
    2. 将请求xml返回给http
    3. 然而,这不是我想要的。我需要的流程是:

      1. Mule在第一个流程上处理了操作,直到请求 - 回复组件
      2. 转到第二个流程并处理所有组件
      3. 完成第二次流程后,将进入第三次流程。继续所有组件
      4. 将回复发送回第一个流程的请求 - 回复组件
      5. 执行一些日志记录(第一个流程中的记录器组件)
      6. 完成
      7. 此应用程序的结果应为:

        1. 1文件包含JSON响应
        2. http
        3. 上的JSON响应

          那么,该怎么做?提前谢谢。

1 个答案:

答案 0 :(得分:1)

您没有显示消耗sender中VM出站端点发送到request-reply路径的消息的流:我假设它是流量负责将消息发送到服务器。

似乎您错过的是SendResponse中的VM出站端点,该端点会将消息发送到response路径,虚拟机入站等待request-reply。< / p>

PS。当然,假设服务器将 JMS相关ID 从请求消息传播到响应消息,否则Mule(也不是任何客户端)可能会将响应重新连接到响应消息。请求,request-reply将失败。

PPS。您不需要all内单个VM出站端点周围的request-reply路由器。