簡體   English   中英

如何在WSO2 ESB中調解純TCP消息

[英]How to mediate pure TCP messages in WSO2 ESB

我有一個應用程序(比方說,TcpApp)發送純TCP消息(即沒有SOAP,沒有信封......只是一個原始字符串甚至字節)。 我需要連接ESB以通過特定端口(例如,3333)監聽這些消息,並進行一些調解(現在,只做日志記錄就足夠了)。 我認為從TcpApp創建ActiveMQ隊列然后在ESB中從JMS創建代理服務(而不是直接將ESB連接到TcpApp)是個好主意。 我閱讀了幾個示例和答案,但始終是XML,TCP只是傳輸。 有時會發生的是應用程序不通過TCP發送特殊格式(有時稱為電報)。 我試圖更改內容類型,但ESB仍然拒絕讀取TCP端口。

<parameter name="transport.tcp.contentType">text/plain</parameter>

可能我仍然對解決方案的體系結構感到困惑,但我認為像這個TcpApp這樣的經紀人,或像WSO2這樣的ESB應該可以工作。 我更喜歡先解析解決方案,以獲得真正的配置以使其工作。 所有評論,歡迎!

在WSO2 EI 6.1.1中,我發現如果我還指定了recordDelimiter和recordDelimiterType,我可以成功處理純文本TCP消息。 工作代理的示例(換行符作為分隔符):

<parameter name="transport.tcp.responseClient">true</parameter>
<parameter name="transport.tcp.inputType">binary</parameter>
<parameter name="transport.tcp.recordDelimiter">0x0A</parameter>
<parameter name="transport.tcp.contentType">text/plain</parameter>
<parameter name="transport.tcp.port">50001</parameter>
<parameter name="transport.tcp.recordDelimiterType">byte</parameter>

輸入序列中的消息正文如下所示:

<text xmlns="http://ws.apache.org/commons/ns/payload">this_is_the_message</text>

您需要使用正確的消息格式化程序和構建器來處理任何事情。 在axis2.xml文件中使用以下格式化程序。

<messageFormatter contentType="application/binary" class="org.wso2.carbon.relay.ExpandingMessageFormatter"/>
<messageBuilder contentType="application/binary" class="org.wso2.carbon.relay.BinaryRelayBuilder"/>

只需更改您喜歡的內容類型,並在代理服務配置中使用相同的內容。 其實我也有一篇關於此的博文[1] :)

[1] - http://soatechflicks.blogspot.com/2017/05/processing-binary-data-from-tcp.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM