我的代理服务中有以下逻辑:
<proxy>
<inSequence>
<switch source="get-property('Action')">
<case regex="getTaskTicket">
<sequence key="CQProxy_GetTaskTicket"/>
</case>
<case regex="updateTaskTicket">
<sequence key="CQProxy_UpdateTaskTicket"/>
</case>
...
<default/>
</switch>
</inSequence>
<outSequence>
<send/>
</outSequence>
</proxy>
现在我的CQProxy_UpdateTaskTicket调用另一个序列:
<sequence name="CQProxy_UpdateTaskTicket">
... some logic goes here ...
<sequence key="CQProxy_GetTicketDetails"/>
... here I need to wait for response from CQProxy_GetTicketDetails
before further processing ...
</sequence>
CQProxy_GetTicketDetails由各种其他序列使用,并依次定义OUT序列以处理其响应:
<sequence name="CQProxy_GetTicketDetails">
... some logic ...
<send receive="CQProxy_GetTicketDetails2">
<endpoint key="CQ"/>
</send>
</sequence>
问题是在CQProxy_UpdateTaskTicket序列调用CQProxy_GetTicketDetails子序列之后,它不等待来自该子序列的响应,而是继续消息处理。 如何才能使CQProxy_UpdateTaskTicket在继续之前等待响应?
答案 0 :(得分:1)
我能够通过将响应序列名称传递给子序列来解决这个问题。
答案 1 :(得分:0)
您可以使用Callout介体进行WSO2 ESB中的阻止操作。您可以轻松使用下面提到的callout mediator,而不是使用Send mediator(非阻塞)。