2014-02-20 68 views
4

我有一個應用程序(比如TcpApp)發送純TCP消息(即沒有SOAP,沒有信封......只是一個原始字符串或甚至字節)。我需要連接ESB以通過特定端口(例如,3333)來偵聽這些消息,並進行一些調解(現在,除了日誌記錄外什麼也不做)。我認爲從TcpApp創建ActiveMQ隊列,然後在ESB中從JMS創建代理服務(而不是直接將ESB連接到TcpApp)是一個好主意。 我讀了幾個樣本和答案,但總是這個概念是XML,而TCP只是傳輸。有時發生的事情是,應用程序不會通過TCP發送特殊格式(有時稱爲電報)。 我試圖更改內容類型,但ESB仍拒絕讀取TCP端口。如何調解WSO2 ESB中的純TCP消息

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

可能我現在還在與解決方案的架構混淆,但我認爲一個經紀人或ESB WSO2一樣,應該工作是這種情況下,從這個TcpApp調停。我更喜歡在解決方案之前獲得真正的配置以使其工作。 所有評論,歡迎!

+0

謝謝加藤有關question.You要求也clearly.I面臨這個問題。如果有人知道答案,請提供。 – Dev4World

回答

0

在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> 
0

您需要使用正確的消息格式化和建設者處理任何事情。在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