2016-06-28 12 views
2

ブロッキングコールを使用してバックエンドサービス呼び出しにWSO2 ESB 4.9.0を使用しています。私は、jmsトランザクションのためにブロッキングコールを使用する必要があります。時にはESBとバックエンドサービス間のネットワークが遅いため、接続時にタイムアウトを使用したいが、エンドポイントでのコールのタイムアウトがブロックされても機能しない。ノンブロッキングコールタイムアウトは正常に動作します。WSO2 ESBブロッキングコールタイムアウト

ブロッキングコールでタイムアウトを使用することはできますか?

ありがとうございます。

答えて

1

エンドポイントのタイムアウトを使用すると、2つの方法で、次の試してみることができますコールブロッキングで動作していないとして:synapse.propertiesで定義されて

1)グローバル・タイムアウト(ESB_HOME \リポジトリ\ confに)ファイル。 これは、コールバックが特定の要求に対する応答のためにESBで待機している最大時間を決定します。

ESBがバックエンドから応答を受け取らない場合、メッセージをドロップしてコールバックをクリアします。これは、ESBで構成されたすべてのエンドポイントに影響するグローバルレベルのパラメータです。 passthru-http.properties(ESB_HOME \リポジトリの\ CONF)ファイルで定義され

synapse.global_timeout_interval=120000 

2)ソケットタイムアウト。

このパラメータは、特定のhttp要求が応答を待っているタイムアウトを決定します。この期間中にESBがバックエンドからの応答を受信しない場合、HTTP接続はタイムアウトし、最終的にESB側でタイムアウトエラーが発生し、障害ハンドラがヒットします。

http.socket.timeout=60000 
+0

'synapse.global_timeout_interval'はブロッキング呼び出しでも機能しません。 'http.socket.timeout'は動作しますが、非常に奇妙です。ネットワーク接続が遅く、リクエストを送るのに 'http.socket.timeout'よりも時間がかかっている場合、サーバーがリクエストを受け取った直後に' java.net.SocketTimeoutException'がスローされます。そのため、100KBの要求が1KB /秒の速度で送信された場合、http.socket.timeoutの値がより小さくても100秒後にSocketTimeoutExceptionがスローされます。 – tyfyh