Сервер интеграции Spring с Java DSL - PullRequest
0 голосов
/ 18 мая 2018

Я ищу пример TCP-сервера Spring Integration 4.3.14, который отвечает на сообщение, используя Java DSL, а не XML.

Требование 4.3.14 устанавливается корпоративной политикой, которая также избегает XML.

Конечное требование - получить форматированный текст полезной нагрузки из ПЛК и ответить аналогичным образом.Код ПЛК является устаревшим и не совсем четко определен, и симулированные полезные нагрузки могут иметь разные форматы.

Простой способ справиться с входной полезной нагрузкой - это обрабатывать ее как строку и обрабатывать ее в коде Java.

У меня есть базовая работа с recive, но я не могу понять, как отправить ответ, прочитал много примеров и тому подобное, но теперь думаю, что ум просто сбит с толку, так что простой рабочий пример будет идеальным.

Большое спасибо

1 Ответ

0 голосов
/ 18 мая 2018

Вот, пожалуйста ...

@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();
        };
    }

}
...