Spring Integration通过tcp连接接收和发送消息

ear*_*dap 3 java tcp spring-integration

我正在尝试使用Spring Integration实现以下场景:

  • 我需要通过TCP IP连接到服务器并处理收到的消息.
  • 我需要将消息发送到接收和处理响应的同一服务器.

这是我的配置:

 <channel id="input">

        <interceptors>
            <wire-tap channel="logger"/>
        </interceptors>
    </channel>


    <logging-channel-adapter id="logger" level="DEBUG" log-full-message="true"/>

    <ip:tcp-connection-factory id="factory" type="client" host="localhost" port="9004" single-use="false"
                               using-nio="true" deserializer="javaDeserializer"/>

    <ip:tcp-inbound-channel-adapter id="inbound" channel="input" connection-factory="factory" client-mode="true"
                                    retry-interval="5000"/>
Run Code Online (Sandbox Code Playgroud)

我可以接收从服务器发送的消息,但我不知道如何转换字符串.消息到达时不调用javaDeserializer.

2014-01-19 05:47:20 DEBUG TcpNioConnection:380 - localhost:9004:74154fb2-f77c-4036-9142-e756e53a6ac6 Reading...
2014-01-19 05:47:20 DEBUG TcpNioConnection:324 - Read 26 into raw buffer
2014-01-19 05:47:25 DEBUG TcpNioConnection:380 - localhost:9004:74154fb2-f77c-4036-9142-e756e53a6ac6 Reading...
2014-01-19 05:47:25 DEBUG TcpNioConnection:324 - Read 26 into raw buffer
2014-01-19 05:47:30 DEBUG TcpNioConnection:380 - localhost:9004:74154fb2-f77c-4036-9142-e756e53a6ac6 Reading...
2014-01-19 05:47:30 DEBUG TcpNioConnection:324 - Read 26 into raw buffer
2014-01-19 05:47:35 DEBUG TcpNioConnection:380 - localhost:9004:74154fb2-f77c-4036-9142-e756e53a6ac6 Reading...
2014-01-19 05:47:35 DEBUG TcpNioConnection:324 - Read 26 into raw buffer
Run Code Online (Sandbox Code Playgroud)

示例中,您可以发送消息并处理来自服务器的回复,但连接将关闭,而不会继续侦听来自服务器的消息.不知道怎么解决这个问题?

提前致谢.

爱德华多

Gar*_*ell 8

TCP是一种流协议,没有"消息"的概念.该框架使用序列化器(用于输出)和反序列化器(用于输入)来编码/解码流到/来自流的消息.

该框架有一个号码的标准解串行器(例如消息由分隔\n\r\n等等).

如果您的数据不符合这些标准格式之一,则需要提供自定义反序列化程序.一个好的开始就是查看标准的反序列化器并将其子类化AbstractByteArraySerializer.