EventBus с отменой развертыванияJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 EventBus с отменой развертывания

Сообщение Anonymous »

Это пример кода:

Код: Выделить всё

public class EventTest {
public static void main(String[] args) {
var latch = new CountDownLatch(1);
var vertx = Vertx.vertx();
vertx.eventBus().consumer("address", message -> {
vertx.executeBlocking(() -> {
try {
Thread.sleep(3000);
} catch (InterruptedException ignored) {}
message.reply("Sleeping done.");
return null;
}, false);
});

vertx.deployVerticle(new AbstractVerticle() {
@Override
public void start(Promise startPromise) throws Exception {
getVertx().eventBus().consumer("event", message -> {
System.out.println("Received Event msg:" + message.body());
latch.countDown();
getVertx().eventBus()
.request("address", "hello")
.onComplete(
m -> System.out.println("Received reply message: " + m.body()),
Throwable::printStackTrace
);
});

super.start(startPromise);
}

@Override
public void stop(Promise stopPromise) throws Exception {
super.stop(stopPromise);
}
}, new DeploymentOptions())
.onComplete(
id -> {
Thread.ofPlatform().start(() -> {
vertx.eventBus().publish("event", "Hello World");
try {
latch.await();
} catch (InterruptedException ignored) {}

Thread.ofPlatform().start(() -> vertx.undeploy(id).onComplete(event -> System.out.println("Undeployed")));
});
},
Throwable::printStackTrace
);
}
}
Когда Verticle обрабатывает событие EventBus и одновременно не развертывается, это приводит к тому, что интерфейс обратного вызова не вызывается (он не выводит сообщение «Получено ответное сообщение: спящий режим завершен»). Как я могу гарантировать, что обратный вызов завершит выполнение до того, как Verticle будет полностью отключено?
ожидается System.out.println: «Получено ответное сообщение: Спящий режим завершен».

Подробнее здесь: https://stackoverflow.com/questions/792 ... y-verticle
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»