Vert.x 大多是操作都是异步的,不同Verticle都通讯可以通过EventBus来进行。
EventBus
Vert.x的EventBus可以通过Vertx对象获取,EventBus通过send或publish发送消息,通过consumer消费消息:
public class EventBusStarter {
public static void main(String[] args) {
Vertx vertx = Vertx.vertx();
vertx.eventBus().consumer("ping-pong", message -> {
System.out.println("recv: " + message.body());
});
vertx.eventBus().send("ping-pong", "ping");
}
}
send和publish的不同点在于,send只会发送给一个接收者,而publish则会通知所有接收者。
另外,EventBus通过相同的地址进行信息通讯,地址是字符串格式,如上面代码中的ping-pong
。
EventBus的消息体可以是多种类型:
- String
- Json
- Buffer
以上这些类型都是可以的。
在 Verticle 中注册了 Event Bus 的处理器,那么这些处理器在 Verticle 被撤销的时候会自动被注销。
彩蛋:关注公众号、或小程序,阅读更多IT文章。