Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在spring集成中处理ACK/NAK?_Java_Tcp_Spring Integration_Tcp Ip - Fatal编程技术网

Java 如何在spring集成中处理ACK/NAK?

Java 如何在spring集成中处理ACK/NAK?,java,tcp,spring-integration,tcp-ip,Java,Tcp,Spring Integration,Tcp Ip,我的Tcp服务器与spring集成配合得很好。我使用以下bean: <int-ip:tcp-connection-factory id="tcpServerFactory" type="server" port="9000" single-use="true" so-timeout="10000" using-nio="false" serializer="connectionSerializeDeserialize" deseri

我的Tcp服务器与spring集成配合得很好。我使用以下bean:

<int-ip:tcp-connection-factory id="tcpServerFactory"
    type="server"
    port="9000"
    single-use="true"
    so-timeout="10000"
    using-nio="false" 
    serializer="connectionSerializeDeserialize"
    deserializer="connectionSerializeDeserialize"
    task-executor="taskExecutor"
    />

<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
    <property name="corePoolSize" value="5" />
    <property name="maxPoolSize" value="100" />
    <property name="queueCapacity" value="25" />
</bean>
<bean id="connectionSerializeDeserialize" class="org.springframework.integration.ip.tcp.serializer.ByteArrayStxEtxSerializer"/>

<int-ip:tcp-inbound-gateway id="gatewayStxEtx"
    connection-factory="tcpServerFactory"
    request-channel="requestChannel"
    error-channel="tcpErrorChannel"
    reply-timeout="10000"
    />  

如果我的客户收到格式正确的消息(STX和ETX之间包含的数据),则会发送ACK。如果在接收数据时出现任何错误,它将发送NAK。在Tcp服务器上,我需要读取客户端发送的ACK/NAK。若客户端发送ACK,那个么服务器不需要做任何事情。若客户端发送NAK,服务器需要将数据重新发送回客户端

在spring集成中是否有处理ACK/NAK的序列化程序? 如果没有,请建议在何处以及如何处理ACK/NAK


谢谢

客户端发送的ack/nack的格式是什么?您当前的
连接序列化反序列化
是什么样子的?客户端以单个字节0x06发送ACK。(或NAK为0x15)。我的序列化程序bean来自spring OK;在这种情况下,您将需要一个定制的
反序列化器
,该反序列化器检测ack/nack,否则将委托给
Byt‌​耳环‌​er
。由于这是对响应的(n)确认,您将希望丢弃它(而不是将其作为消息转发),因此反序列化程序应返回null。但是,请注意,
tcpmessageapper
将记录警告日志,因此您可能希望将其记录器设置为仅记录错误级别的日志。对于NACK,您必须返回一些将包装在消息中的值,并且您的流必须对其进行处理。谢谢Gary,自定义反序列化器似乎是一种方法。客户端发送的ack/NACK的格式是什么?您当前的
连接序列化反序列化
是什么样子的?客户端以单个字节0x06发送ACK。(或NAK为0x15)。我的序列化程序bean来自spring OK;在这种情况下,您将需要一个定制的
反序列化器
,该反序列化器检测ack/nack,否则将委托给
Byt‌​耳环‌​er
。由于这是对响应的(n)确认,您将希望丢弃它(而不是将其作为消息转发),因此反序列化程序应返回null。但是,请注意,
tcpmessageapper
将记录警告日志,因此您可能希望将其记录器设置为仅记录错误级别的日志。对于NACK,您必须返回一些将被包装在消息中的值,并且您的流必须对其进行处理。谢谢Gary,定制反序列化器似乎是一个不错的选择。