我想将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>
答案 0 :(得分:0)
对于上述转换,我可以通过ESB实现的最大TPS约为每秒3500。这是与axis2_nhttp配置。对此最好的解决方案是使用单独的UDP到TCP / HTTP程序,这样我们就可以获得高吞吐量(不使用ESB)。
无论如何,我需要这个对话,因为CEP不接受UDP消息。因此,我认为最好的解决方案是使用提到的单独的UDP到TCP / HTTP程序为CEP编写UDP适配器(接收器)&#39;。在这种情况下,我每秒可以发送高达100,000 udp的消息。