【问题标题】:WSO2 ESB: How to make Sequence mediator wait for response before proceedingWSO2 ESB:如何让序列调解器在继续之前等待响应
【发布时间】:2013-06-20 22:13:17
【问题描述】:

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

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

【问题讨论】:

    标签: wso2 wso2esb


    【解决方案1】:

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

    【讨论】:

    • 请说得更具体些。
    【解决方案2】:

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

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

    【讨论】:

    • Chanaka,据我了解,Callout mediator 只能调用 SOAP WS,而我需要调用 REST 服务。此外,此 REST 服务需要特定参数:授权、内容类型等。无法在 Callout 中指定它们。
    猜你喜欢
    • 2012-09-27
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多