J'envoie un message à une verticille qui, à son tour, pourrait avoir besoin de l'envoyer à d'autres verticles. Je ne veux pas écrire de code redondant pour copier les en-têtes du message et créer un autre objet message et le transmettre. Est-il possible de transférer le message dans vert.x avec deliveryOptions intact?Vertx: comment transférer des messages d'un verticle à un autre avec deliveryoptions?
0
A
Répondre
0
En utilisant DeliveryOptions, vous pouvez transférer des messages entre les verticles.
Prenons exemple suivant:
// MainVerticle recevra les données et nous allons envoyer à MessagingVerticle
public class MainVerticle extends AbstractVerticle {
@Override
public void start(Future<Void> fut) {
//your logic goes here for message object to pass
MessageConsumer<Object> mc = vertx.eventBus().consumer("your_addressToServer").handler(message -> {
Object message = message.body();
final DeliveryOptions options = new DeliveryOptions().setCodecName("any_messaging_address_name");
vertx.eventBus().send("any_messaging_address_name", Object(message object to pass) , options);
});
}
}
// Envoyer les messages à MessagingVerticle
public class MessagingVerticle extends AbstractVerticle {
@Override
public void start(Future<Void> fut) {
vertx.eventBus().<Object>consumer("any_messaging_address_name",
message -> {
Object messageCommand = message.body(); // received object from MainVerticle
});
fut.complete();
}
}
J'espère que cela va vous aider :)
Merci pour votre réponse. Je ne comprends toujours pas comment cela pourrait m'aider à réaliser des messages d'expédition avec des en-têtes intacts. –
vous pouvez utiliser 'message.headers()' pour récupérer un en-tête du corps de la réponse et l'utiliser comme vous le souhaitez. – Flash
Oui, je peux le faire. En fait, je veux transmettre le message sans copier tous les en-têtes et autres méta-informations à chaque point de retransmission, comme je l'ai mentionné dans la question. –