2016-05-02 9 views
1

次のプロキシ設定でWSO2 esbでUDPからHTTPへの変換を行っています。WSO2 esb UDPからTCPへの高速変換

<?xml version="1.0" encoding="UTF-8"?> 
<proxy xmlns="http://ws.apache.org/ns/synapse" 
     name="UDPProxy" 
     transports="udp" 
     statistics="disable" 
     trace="disable" 
     startOnLoad="true"> 
    <target> 
     <inSequence> 
     <property name="OUT_ONLY" value="true"/> 
     </inSequence> 
     <outSequence> 
     <log level="full"/> 
     <send/> 
     </outSequence> 
     <endpoint> 
     <address uri="http://127.0.0.1:9764"/> 
     <property name="messageType" value="application/json" scope="axis2"/> 
     </endpoint> 
    </target> 
    <parameter name="transport.udp.port">9998</parameter> 
    <parameter name="transport.udp.contentType">text/plain</parameter> 
    <description/> 
</proxy> 

そして私は、だから、それだけのポートに耳を傾け、すべての5秒間受信したメッセージ数の数を記録したポート9764.上で実行されている単純なJava HTTPサーバプログラムを持っています。

私はUDPメッセージ(1秒あたり10 udpメッセージ)で上記のプロキシをテストし、うまくいきました。その後、毎秒100個のUDPメッセージを試してみましたが、ESBコンソールで次のようなログが表示されます。

[2016-05-02 12:04:45,160] WARN - TargetHandler http-outgoing-2426: Connection time out while in state: REQUEST_DONE 
[2016-05-02 12:04:45,163] WARN - SynapseCallbackReceiver Synapse received a response for the request with message Id : urn:uuid:101bdbc5-e5fa-4c35-8aa1- 525060b55dec But a callback is not registered (anymore) to process this response 
[2016-05-02 12:04:45,163] WARN - TargetHandler http-outgoing-2399: Connection time out while in state: REQUEST_DONE 
[2016-05-02 12:04:45,165] WARN - SynapseCallbackReceiver Synapse received a response for the request with message Id : urn:uuid:4197a771-8b6d-4d82-bf39-87710c0c18d2 But a callback is not registered (anymore) to process this response 

上記の警告が表示される理由はわかりません。誰かが私にこれを助けることができますか? また、このpxoxyとhttpクライアントの間の接続はHTTP NIOと仮定します。

答えて

1

ESBはエンドポイント(127.0.0.1:9764)からの応答を待っていますが、タイムアウトになります。 このタイムアウト後、ESBは応答を受信しますが、遅すぎます。コールバック(outSequence)はもう存在しません。

あなたはHTTP NIOを使用している場合は、2分間のサンプルのhttp transportSenderアリのconfigure "SO_TIMEOUT" の検索をリポジトリ/ confに/ axis2の/ axis2.xmlをに見て:あなたが必要な場合は<parameter name="SO_TIMEOUT">120000</parameter>

を長いタイムアウトは、あなたがsynapse.global_timeout_intervalでリポジトリ/ confに/ synapse.propertiesに

+0

を変更する必要があり、私はこれを無効にし、応答を待つしないようにESBを求めることができますか? – lsc

+0

あなたはinSequenceでOUT_ONLYをtrueに設定していると分かりますが、ESBはエンドポイントからの応答を待つべきではありませんが、そのような応答を受け取った場合、コールバック受信者がいないと警告します。 ..私は理由がわからない "状態で接続タイムアウト:REQUEST_DONE" –

関連する問題