2

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

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

4

2 回答 2

1

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

于 2013-06-20T14:13:17.670 回答
0

您可以将 Callout 中介器用于 WSO2 ESB 中的阻塞类型的操作。除了使用发送中介(非阻塞),您可以轻松地使用如下所述的标注中介。

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

于 2013-06-11T17:41:11.190 回答