Skip to main content

Qu'est qu'un verticle ?

Un verticle est l'unité fondamentale d'exécution dans le framework Vert.x. C'est une classe qui contient du code métier et qui peut être déployée dans une application Vert.x. Les verticles sont responsables du traitement des événements de manière asynchrone et concurrente, en utilisant une boucle d'événements (event loop).

Caractéristiques principales d'un verticle :

  1. Unité d'exécution : Un verticle représente une tâche ou un composant dans l'application. Il peut être utilisé pour gérer des requêtes, accéder à des bases de données, interagir avec d'autres services, etc.
  2. Asynchrone : Les verticles fonctionnent de manière non bloquante et réagissent aux événements (comme des messages) via des handlers, permettant ainsi une forte concurrence sans avoir à bloquer des threads.
  3. Déploiement flexible : Un ou plusieurs verticles peuvent être déployés sur différents threads ou nœuds de calcul, et Vert.x gère le passage de messages entre eux via l'EventBus.
  4. État isolé : Chaque verticle est isolé, c'est-à-dire qu'il ne partage pas d'état directement avec d'autres verticles, ce qui favorise une programmation concurrente plus sûre.

Types de verticles :

  • Standard verticle : Hérite de la classe AbstractVerticle et permet de définir le comportement de démarrage et d'arrêt via les méthodes start() et stop().
  • Worker verticle : Exécuté dans un pool de threads et destiné aux tâches bloquantes (comme des opérations d'I/O) qui ne peuvent pas être effectuées dans l'event loop.

Exemple basique d’un verticle :

public class MyVerticle extends AbstractVerticle {

@Override
public void start() {
// Code qui s'exécute quand le verticle démarre
vertx.eventBus().consumer("my.address", message -> {
message.reply("Hello from Verticle!");
});
}

@Override
public void stop() {
// Code qui s'exécute quand le verticle s'arrête
}
}

Dans cet exemple, le verticle écoute les messages envoyés à l'adresse my.address via l'EventBus et répond "Hello from Verticle!".