[英]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.