Spring 具有 Java DSL 的集成服务器

Spring Integration server with Java DSL

我正在寻找 Spring Integration 4.3.14 TCP 服务器的示例,该服务器使用 Java DSL 而不是 XML.

来响应消息

公司政策规定了 4.3.14 要求,这也避免了 XML。

最终要求是从 PLC 接收格式化的文本有效负载并以同样的方式响应。 PLC 代码是遗留的,根本没有明确定义,模拟有效载荷可以有不同的格式。

处理输入负载的简单方法是将其视为字符串并在 Java 代码中处理。

我有一个基本的接收工作,但不知道如何发送回复,阅读了很多示例等等,但现在认为我的头脑很混乱,所以一个简单的工作示例是理想的。

非常感谢

给你...

@SpringBootApplication
public class So50412811Application {

    public static void main(String[] args) {
        SpringApplication.run(So50412811Application.class, args).close();
    }

    @Bean
    public TcpNetServerConnectionFactory cf() {
        return new TcpNetServerConnectionFactory(1234);
    }

    @Bean
    public TcpInboundGateway gateway() {
        TcpInboundGateway gw = new TcpInboundGateway();
        gw.setConnectionFactory(cf());
        return gw;
    }

    @Bean
    public IntegrationFlow flow() {
        return IntegrationFlows.from(gateway())
                .transform(Transformers.objectToString())
                .<String, String>transform(String::toUpperCase)
                .get();
    }

    // client

    @Bean
    public ApplicationRunner runner() {
        return args -> {
            Socket socket = SocketFactory.getDefault().createSocket("localhost", 1234);
            socket.getOutputStream().write("foo\r\n".getBytes()); // default CRLF deserializer
            InputStream is = socket.getInputStream();
            int in = 0;
            while (in != 0x0a) {
                in = is.read();
                System.out.print((char) in);
            }
            socket.close();
        };
    }

}