我正在寻找一个 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();
};
}
}
关于spring-boot - 带有 Java DSL 的 Spring Integration 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50412811/