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

WSO2 ESB 内のブロッキング操作には Callout メディエータを使用できます。送信メディエーター (非ブロッキング) を使用する代わりに、以下で説明するようにコールアウト メディエーターを簡単に使用できます。

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

于 2013-06-11T17:41:11.190 に答える