我有一个应用程序(比方说,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应该可以工作 . 我更喜欢先解析解决方案,以获得真正的配置以使其工作 . 所有评论,欢迎!
2 回答
在WSO2 EI 6.1.1中,我发现如果我还指定了recordDelimiter和recordDelimiterType,我可以成功处理纯文本TCP消息 . 工作代理的示例(换行符作为分隔符):
输入序列中的消息正文如下所示:
您需要使用正确的消息格式化程序和构建器来处理任何事情 . 在axis2.xml文件中使用以下格式化程序 .
只需更改您喜欢的内容类型,并在代理服务配置中使用相同的内容类型 . 其实我也有一篇关于此的博文[1] :)
[1] - http://soatechflicks.blogspot.com/2017/05/processing-binary-data-from-tcp.html