我目前正在从事一个项目,该项目需要外部系统和我将要编写的应用程序(使用Java)之间的TCP通信。众所周知,使用常规NIO可以轻松实现。但是,作为我正在进行的这个新项目的一部分,我必须使用Vert.x来提供TCP通信。请参考下图:
在右边,我的应用程序作为TCP服务器运行,等待来自外部系统的连接,在左边。我读过要创建一个TCP并监听连接,您可以简单地执行以下操作:
NetServer server = vertx.createNetServer();
server.listen(1234, "localhost", res -> {
if (res.succeeded()) {
System.out.println("Server is now listening!");
} else {
System.out.println("Failed to bind!");
}
});
Run Code Online (Sandbox Code Playgroud)
但是,我不知道的一点是当外部系统连接到我的应用程序并通过TCP发送EchoRequestMessages时如何处理。我的应用程序必须获取接收到的字节缓冲区,将其解码为EchoRequestMessage POJO,然后将EchoResponseMessage编码为字节缓冲区,然后发送回外部系统。
我如何使用vert.x-rx对接收到的EchoRequestMessage,其解码,EchoResponseMessage的编码进行反应式编程,然后将其发送回外部系统,所有这些都以一种构建器模式类型设置进行。我已经阅读了有关Observable和订阅的内容,但是我无法弄清楚要观察什么或订阅什么。任何帮助将不胜感激。