Spring 集成 IP - 在通过套接字的消息末尾省略回车 return (\r\n)

Spring integration IP - omit carriage return (\r\n) at the end of message through sockets

当我将字节数组发送到响应通道时,我希望只将该字节数组发送到套接字。比如在spring整合ip.

@ServiceActivator(inputChannel = "serviceChannel")
public byte[] service(byte[] byteArray) {
    return new byte[]{0,2,1,0};
}

我希望它能发送

00, 02, 01, 00

但是!这还将向流发送两个额外的字节

00, 02, 01, 00 , 0D, 0A 

消息结束。我不想发送那些字节,即我想省略它们。如何实现?

我怀疑这与套接字如何解释消息有关,但无论我如何尝试,我都没有找到发生这种情况的地方。

upd:我发现了问题:Spring 在我的配置中使用了 class ByteArrayCrLfSerializer 但我需要使用 ByteArrayRawSerializer。我该怎么做?

the Spring Integration documentation about serializers/deserializers

您通常需要某种方式来划分流中的多条消息。如果数据本身包含此类信息,您可以使用 ByteArrayRawSerializer,这将不添加任何字符。

如果您使用 XML 配置,请使用 serializer="raw",其中 raw 是 class ByteArrayRawSerializer。如果您使用 java 配置,只需在 @Bean.

中设置序列化程序

如果您需要使用 Spring 集成来解码此类消息(并且通过套接字发送的消息不止一个),您将需要一个自定义反序列化器。