我是vert.x的新手。我正在嘗試vert.x「NetServer」功能。 http://vertx.io/core_manual_java.html#writing-tcp-servers-and-clients,它的功能就像一個魅力。vertx中的多線程
不過,我也讀了「A verticle實例是嚴格單線程的。
如果您創建一個簡單的TCP服務器和部署,那麼所有該服務器的處理器是始終在同一個執行它的單個實例事件循環(線程)「。
目前,對於我的實現,我想要接收TCP字節流,然後觸發另一個組件。但是這不應該是Verticle的「開始」方法中的阻塞調用。那麼,在啓動方法中編寫執行程序是否是一種好的做法?或者vertx自動處理這種情況。
這裏是一個片段
public class TCPListener extends Verticle {
public void start(){
NetServer server = vertx.createNetServer();
server.connectHandler(new Handler<NetSocket>() {
public void handle(NetSocket sock) {
container.logger().info("A client has connected");
sock.dataHandler(new Handler<Buffer>() {
public void handle(Buffer buffer) {
container.logger().info("I received " + buffer.length() + " bytes of data");
container.logger().info("I received " + new String(buffer.getBytes()));
//Trigger another component here. SHould be done in a sperate thread.
//The previous call should be returned . No need to wait for component response.
}
});
}
}).listen(1234, "host");
}
}
應該是什麼樣的機制,使之成爲非阻塞調用。
您可能會在[vert.x google group](https://groups.google.com/forum/#!forum/vertx)中發佈此問題的答案更快。但是,只要你不需要第二個模塊的回覆,你應該只能在MessageBus上發送一條消息,並且忽略該消息的響應。 –