[英]Netty-TCP-HTTP-MQTT design
我正在尝试编写一个服务器端Java应用程序,它可以接受tcp,http和mqtt通信(接收和发送/ MongoDB作为存储)。 通过研究,我们认为它可能是基于Netty和paho的mqtt的jar应用程序。 我们有3个项目使用其中的三种协议,因此我试图统一连接模块。 它们各自具有不同的协议样式,例如:
-tcp:0102330123456700
-http:HTTP POST / URL / count {“ id”:“ 02”,“ count”:“ 01234567”}
-mqtt:主题/ 02 / count {“ count”:“ 01234567”}
由于我们时间不够,我以一种愚蠢但快速的方式运行它们三个--3个不同的线程侦听3个不同的端口。
public class ServerLauncher {
public static void main(String[] args) {
NettyRestServer nettyRestServer = new NettyRestServer();
MqttServer mqttServer = new MqttServer();
EchoServer echoServer = new EchoServer();
new Thread(nettyRestServer,"HTTP Listening").start();
new Thread(mqttServer,"Mqtt Listening").start();
new Thread(echoServer,"socket Listening").start();
}
}
我的问题是:
如果将Netty用于所有这些,则可以为所有服务器共享相同的EventLoopGroup
,这意味着所有服务器都将共享相同的Threads
。
您不必使用三个线程来启动Server。 您只能在一个ServerBootstrap中完成所有这些操作。 并将逻辑放在ChannelHandler中。
Netty的ChannelPipeline在获得连接时可以动态更改ChannelHandler。
ctx.pipeline().addBefore(...)
ctx.pipeline().addAfter(...)
ctx.pipeline().remove(...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.