私は vert.x の初心者です。私は vert.x の「NetServer」機能を試していました。http://vertx.io/core_manual_java.html#writing-tcp-servers-and-clientsとそれは魅力のように動作します。
ただし、「バーティクル インスタンスは厳密にシングル スレッドです。
単純な TCP サーバーを作成し、そのインスタンスを 1 つデプロイすると、そのサーバーのすべてのハンドラーが常に同じイベント ループ (スレッド) で実行されます。」
現在、私の実装では、バイトの TCP ストリームを受信してから、別のコンポーネントをトリガーしたいと考えていました。ただし、これは Verticle の「開始」メソッド内でのブロッキング呼び出しであってはなりません。では、start メソッド内にエグゼキュータを記述することは良い習慣でしょうか? または、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");
}
}
これを非ブロッキング呼び出しにするメカニズムは何ですか。