Tcp 入站网关不调用串行器,但解串器正在被调用

问题描述 投票:0回答:1

我们需要监听端口并接收消息,然后需要将其写回到同一个输出流中。我们已经编写了运行良好的自定义解串器。但自定义序列化器没有被调用。我们已经使用了 Spring 集成流程。

@Bean
    public IntegrationFlow integrationFlow() {

        return IntegrationFlows.from(Tcp.inboundGateway(Tcp.nioServer(port)
              .deserializer(new TestDeserializer())
             .serializer(new TestSerializer())
             ))
                .transform(Transformers.objectToString())
                .handle("outboundService", "processAndSendMessage")
                .get();
    }

找到下面的自定义解串器:

public class TestDeserializer implements Deserializer<String>{

    private static final char END_OF_BLOCK = '\u001c';
    
    @Override
    public String deserialize(InputStream inputStream) throws IOException {
        boolean end_of_message = false;
        int characterReceived = 0;
        StringBuffer parsedMessage = new StringBuffer();
        characterReceived = inputStream.read();
        
        while (!end_of_message) {
            characterReceived = inputStream.read();
            if (characterReceived == END_OF_BLOCK) {
                characterReceived = inputStream.read();
                end_of_message = true;
            }else {
                parsedMessage.append((char) characterReceived);
            }
        }
        String message = parsedMessage.toString();
        inputStream.close();
        parsedMessage = null;
        return message;
    }

}

找到下面的自定义序列化器

public class TestSerializer implements Serializer<String>{

    @Override
    public void serialize(String object, OutputStream outputStream) throws IOException {
        System.out.println("inside Serializer -- "+object);
        outputStream.write(object.getBytes());
        System.out.println("inside after Serializer -- "+object);
    }

}

在 Spring 集成流程中未调用自定义序列化器。

spring-integration spring-integration-dsl
1个回答
0
投票

当下游流返回回复时,从

Serializer
调用
Tcp.inboundGateway()

请确保您的

.handle("outboundService", "processAndSendMessage")
返回一些内容。否则就没有意义了
Tcp.inboundGateway()

© www.soinside.com 2019 - 2024. All rights reserved.