Vert.x — это все тот же стиль, асинхронное программирование, которое в основном подчеркивается обработчиками обратных вызовов.
Чтобы обработать случай сбоя развертывания, вы должны сначала пойти программным путем, т. е. вы должны программно развернуть свою вершину, скажем, через вертикул развертывания, предоставляющий обработчик завершения, который будет заполнен результатом развертывания, здесь запишите образец, используя Java (поскольку вы не выбрали конкретный язык, я сделаю все возможное), где:
MainVerticle
: ваша вершина развертывания (используется в основном для развертывания других вершин)
some.package.MyVerticle
: ваша настоящая тема, обратите внимание, что здесь я использовал id, а не экземпляр.
public class MainVerticle extends AbstractVerticle {
public void start() {
vertx.deployVerticle("some.package.MyVerticle", res -> {
if (res.succeeded()) {
// Do whatever if deployment succeeded
} else {
// Handle deployment failure here...
}
});
}
}
Теперь, когда дело доходит до «сбоев обмена сообщениями», будет сложнее выделить конкретный случай, поскольку он может произойти во многих местах и от имени обоих концов обмена сообщениями.
Если вы хотите зарегистрировать обработчик сбоя при отправке сообщения, вы можете создать экземпляр MessageProducer<T>
, представляющий поток, в который он может быть записан, а затем зарегистрировать для него обработчик исключений:
EventBus eb = vertx.eventBus();
MessageProducer<String> sender = eb.sender("someAddress");
sender.exceptionHandler(e -> {
System.out.println("An error occured" + e.getCause());
});
sender.write("Hello...");
С другой стороны, вы можете обработать случай сбоя при чтении полученных сообщений почти таким же образом, но на этот раз используя MessageConsumer<T>
:
EventBus eb = vertx.eventBus();
MessageConsumer<String> receiver = eb.consumer("someAddress");
receiver.exceptionHandler(e -> {
System.out.println("An error occured while readeing data" + e.getCause());
}).handler(msg -> {
System.out.println("A message has been received: " + msg.body());
});
person
tmarwen
schedule
24.06.2015