WSO2 esb UDP到TCP的转换 - 提高性能

时间:2016-05-02 11:58:11

标签: wso2 wso2esb wso2cep

我想将UDP流转换为TCP / HTTP并将其提供给WSO2 CEP。因此,对于UDP到HTTP的转换,我使用了WSO2 ESB。正如我所看到的,可以使用ESB代理顺利地将2000UDP消息转换为HTTP。在那种情况下,ESB占用了大约2.2GB RAM。但我需要比这更多的性能(每秒大约50,000次转换)。

我的转换ESB代理如下。有没有办法达到上述表现? (我假设ESB在这里使用HTTP NIO)。

<?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" scope="default" type="STRING"/>
         <payloadFactory media-type="xml">
            <format>
               <events xmlns="">
                  <event>
                     <metaData>
                        <http2>dddd</http2>
                     </metaData>
                  </event>
               </events>
            </format>
            <args>
               <arg value="eee"/>
            </args>
         </payloadFactory>
      </inSequence>
      <endpoint>
         <address uri="http://127.0.0.1:9783/endpoints/http2">
            <suspendOnFailure>
               <errorCodes>-1</errorCodes>
               <progressionFactor>1.0</progressionFactor>
            </suspendOnFailure>
            <markForSuspension>
               <errorCodes>-1</errorCodes>
            </markForSuspension>
         </address>
         <property name="OUT_ONLY" value="true"/>
         <property name="messageType" value="application/xml" scope="axis2"/>
      </endpoint>
   </target>
   <parameter name="transport.udp.port">9998</parameter>
   <parameter name="transport.udp.contentType">text/plain</parameter>
   <description/>
</proxy>

1 个答案:

答案 0 :(得分:0)

对于上述转换,我可以通过ESB实现的最大TPS约为每秒3500。这是与axis2_nhttp配置。对此最好的解决方案是使用单独的UDP到TCP / HTTP程序,这样我们就可以获得高吞吐量(不使用ESB)。

无论如何,我需要这个对话,因为CEP不接受UDP消息。因此,我认为最好的解决方案是使用提到的单独的UDP到TCP / HTTP程序为CEP编写UDP适配器(接收器)&#39;。在这种情况下,我每秒可以发送高达100,000 udp的消息。