gpt4 book ai didi

java - spring 集成 TCP 服务器中的交互

转载 作者:可可西里 更新时间:2023-11-01 02:50:59 25 4
gpt4 key购买 nike

我知道 spring 集成有 TcpInboundGateway、TcpOutboundGateway 和 ByteArrayLengthHeaderSerializer 来处理来自 TCP 端口的数据。

如果 TCP 服务器需要读取从客户端发送的所有数据然后进行处理,则 ByteArrayLengthHeaderSerializer 非常有用。 (请求和响应模型)

例如,如果客户端发送 9AAPL,则服务器可以发送 AAPL 价格。

我正在寻找一种方式,让客户端可以在不关闭多个请求连接的情况下与服务器交互。

例如:如果客户端发送 9AAPL 那么服务器应该发送 AAPL 价格并等待来自客户端的另一个请求而不关闭连接。这种交互一直持续到客户端在 50 秒内发送 5 次响应或没有响应。

您能否建议需要用于此交互行为的 spring 集成类(TCP 网关、序列化程序等)?

我们正在使用 spring integration 4.2.6.RELEASE 版本和 java 8。这些版本是否足够好,还是我们需要升级到更新的版本?

更新:这是我的 Spring 配置:

    <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"/>

谢谢

最佳答案

请显示您的配置 - 您想要的是默认行为。

只有当您将 singleUse 设置为 true 时,网关才会关闭套接字。

当然,您的客户端也不能关闭套接字。

设置 soTimeout 以在该时间未收到任何请求后关闭套接字。

您不需要更新的版本,但我们始终建议使用最新版本 (4.3.4)。

关于java - spring 集成 TCP 服务器中的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40385581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com