WSO2 ESB:如何使序列介体在继续之前等待响应

时间:2013-06-11 15:14:05

标签: wso2 wso2esb

我的代理服务中有以下逻辑:

<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在继续之前等待响应?

2 个答案:

答案 0 :(得分:1)

我能够通过将响应序列名称传递给子序列来解决这个问题。

答案 1 :(得分:0)

您可以使用Callout介体进行WSO2 ESB中的阻止操作。您可以轻松使用下面提到的callout mediator,而不是使用Send mediator(非阻塞)。

http://docs.wso2.org/wiki/display/ESB460/Callout+Mediator