【发布时间】:2014-01-19 10:59:04
【问题描述】:
我正在尝试使用 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"/>
我可以接收从服务器发送的消息,但我不知道如何转换字符串。消息到达时不会调用 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
以this 为例,您可以发送消息并处理来自服务器的回复,但连接将关闭并且不会继续监听来自服务器的消息。知道如何解决这个问题吗?
提前致谢。
爱德华多
【问题讨论】:
-
你需要把问题解释的更清楚;服务器是否发送 java 序列化对象?如果是这样,该日志对我来说意味着消息不完整并且反序列化器正在等待更多数据。进行线程转储(使用
jstack或VisualVM)以查看线程在做什么。 -
服务器发送这样的文本字符串 /*00FF99*/。我需要的是捕获这些字符串。他们真的来了但不知道如何将其转换为存储在数据库中,例如。
标签: java tcp spring-integration