如何避免在WSO2 EI中使用响应中介忽略下一个中介?

时间:2017-11-02 13:16:54

标签: wso2 wso2esb wso2ei

我有一个REST服务,它返回一个简单的json {message:“ok”}。当我使用Respond Mediator时,停止进一步处理消息并将消息发送回客户端。

我需要向客户端发送响应,然后异步执行任务,但是如果我使用它,则忽略对序列或端点的下一次调用。

如何同步响应(响应客户端)然后调用服务,而没有响应中介忽略下一个中介?

感谢;

2 个答案:

答案 0 :(得分:2)

我能够解决这个挑战。有效地克隆调解器不仅仅是克隆消息,它为新消息赋予了新的独立生命。

 <api xmlns="http://ws.apache.org/ns/synapse" name="porticApiAsyn" context="/test">
<resource methods="POST" url-mapping="/asyn">
  <inSequence>
     <log>
        <property name="message" value="asyn"/>
     </log>
     <payloadFactory media-type="json">
        <format>{"message":"asyn test"}</format>
        <args/>
     </payloadFactory>
     <clone continueParent="true" sequential="true">
        <target sequence="logSequence"/>
     </clone>
     <respond/>
  </inSequence>

在这种情况下,将消息发送到logsequence,然后执行响应中介。谢谢你的帮助。

答案 1 :(得分:0)

对于您的情况,您甚至可以执行以下操作

<api xmlns="http://ws.apache.org/ns/synapse" name="porticApiAsyn" context="/test">
<resource methods="POST" url-mapping="/asyn">
  <inSequence>
     <log>
        <property name="message" value="asyn"/>
     </log>
     <payloadFactory media-type="json">
        <format>{"message":"asyn test"}</format>
        <args/>
     </payloadFactory>
     <clone continueParent="true" sequential="true">
        <target sequence="logSequence"/>
        <target>
          <sequence>
            <respond/>
          </sequence>
        </target>
     </clone>
  </inSequence>

我想它应该也可以运作,可能更具可读性