【发布时间】:2016-11-03 17:46:04
【问题描述】:
我使用 Spring 集成构建的 TCP 服务器运行良好。我使用 ByteArrayLengthHeaderSerializer 作为序列化器。
有时,客户端数据来得很慢,导致服务器响应很慢。
我想等待最多 5 秒来从客户端读取数据的每个字节。如果数据字节在 5 秒内没有到来,我想发送 NAK。
如何设置5秒的超时时间?应该设置在哪里? 我需要自定义序列化程序吗?
这是我的春季背景:
<int-ip:tcp-connection-factory id="crLfServer"
type="server"
port="${availableServerSocket}"
single-use="true"
so-timeout="10000"
using-nio="false"
serializer="connectionSerializeDeserialize"
deserializer="connectionSerializeDeserialize"
so-linger="2000"/>
<bean id="connectionSerializeDeserialize" class="org.springframework.integration.ip.tcp.serializer.ByteArrayLengthHeaderSerializer"/>
<int-ip:tcp-inbound-gateway id="gatewayCrLf"
connection-factory="crLfServer"
request-channel="serverBytes2StringChannel"
error-channel="errorChannel"
reply-timeout="10000"/> <!-- reply-timeout works on inbound-gateway -->
<int:channel id="toSA" />
<int:service-activator input-channel="toSA"
ref="myService"
method="prepare"/>
<int:object-to-string-transformer id="serverBytes2String"
input-channel="serverBytes2StringChannel"
output-channel="toSA"/>
<int:transformer id="errorHandler"
input-channel="errorChannel"
expression="payload.failedMessage.payload + ':' + payload.cause.message"/>
谢谢
【问题讨论】:
标签: java tcp spring-integration