Je suis un débutant à vert.x. J'essayais la capacité "NetServer" de vert.x. http://vertx.io/core_manual_java.html#writing-tcp-servers-and-clients et cela fonctionne comme un charme.multithreading au sein de vertx
Cependant, je lis aussi que « Une instance verticle est strictement un seul thread.
Si vous créez un serveur TCP simple et déployer une instance unique de celui-ci alors tous les gestionnaires de ce serveur sont toujours exécutées sur le même boucle d'événement (thread). "
Actuellement, pour ma mise en œuvre, je voulais recevoir le flux d'octets TCP et ensuite déclencher un autre composant. Mais cela ne devrait pas être un appel bloquant dans la méthode "start" de la Verticle. Donc, est-ce une bonne pratique, d'écrire un exécuteur dans la méthode de démarrage? ou est-ce que Vertx gère automatiquement ces cas?
Voici un extrait
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");
}
}
Quel devrait être mécanisme pour faire un appel non bloquant.
Vous aurez probablement une réponse plus rapide affichant cette question [le groupe google vert.x] (https://groups.google.com/forum/#!forum/vertx). Mais tant que vous n'avez pas besoin d'une réponse du second module, vous devriez pouvoir envoyer un message sur le MessageBus, et ignorer la réponse de celui-ci aussi. –