2

Iterate メディエーターを機能させ、別の外部エンドポイントにコールアウトさせるのにほとんど問題はありません。ただし、Sequencing を True に設定するか False に設定するかに関係なく、ESB はすべての要求をかなり高速に送信するように思えます (ログによると)。この迅速なリクエスト送信により、エンドポイントが指している外部 Web サービスで問題が発生しているようです。Iterateが機能するためにxmlに1つのアイテムがある場合、すべて問題ありません。しかし、2回以上反復すると、あらゆる種類のエラーが発生します。

そのため、反復メディエーターでこの外部エンドポイントを呼び出し、応答を待ってから、次の要求で外部エンドポイントを呼び出すことができるのではないかと考えています。WSO2 ESB でそれを達成するにはどうすればよいですか?

コードでそれを行う必要がある場合は、リクエストを配列に入れ、配列のサイズでカウンターを設定します。次に、配列から最初の項目を取得し、Web サービスを呼び出します。応答が返ってきたら、最初にそれを結果配列に入れます。カウンターを 1 増やします。次に、リクエスト配列にさらに項目があるかどうかを確認し、ある場合は次の呼び出しを行います。

4

3 に答える 3

0

「call out」メディエーターを使用するか、「Call」メディエーターを使用してブロッキングモードをtrueに設定できると思います。詳細については、次のリンクを参照してください: https://docs.wso2.com/display/ESB490/Call+Mediator

于 2016-10-31T03:21:34.760 に答える
0

以下に示すように、呼び出しメディエーターで属性blocking="true"を使用してみてください。

<call blocking="true">
 <endpoint key="yourEndpointName"/>
</call>

これで問題は解決するはずです。

ありがとう、これが役立つことを願っています

于 2016-10-17T03:13:55.363 に答える
0

Flag 変数 (プロパティ メディエーター) を使用できると思います。

「request_iterate」に設定された STATUS と呼ばれる Insquence にプロパティ メディエーターを追加します。後で OutSequence で、最初のケースが「request_iterate」に一致するスイッチ メディエーターと、プロパティを設定した後にエンドポイントを呼び出す Send メディエーターを作成できます( 'STATUS') を "response_iterate" に変更します。ケース 2 は「response_iterate」に一致し、応答後に実行する必要があることを実行します。

タイミングに問題がある場合は、メッセージ ストアとメッセージ プロセッサを使用してスロットリング シナリオを実装できます。

注: メッセージ パターンは通常、非同期操作用です。

この助けを願っています

于 2012-10-08T13:24:45.457 に答える