我有一个 REST 服务,它返回一个简单的 json {消息:“ok”}。当我使用 Respond Mediator 时,这会停止进一步处理消息并将消息发送回客户端。
我需要向客户端发送响应,然后异步执行任务,但如果我使用它会忽略对序列或端点的下一次调用。
您如何同步响应(响应客户端)然后调用服务,而没有响应中介者忽略下一个中介者?
谢谢;
我能够解决这个挑战。有效地克隆中介不只是克隆消息,它为新消息赋予了新的独立生命。
<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,然后执行响应中介。谢谢你的帮助。
对于您的情况,您甚至可以执行以下操作
<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>
我想它应该也可以工作,并且可能更具可读性