如何列出所有正在收听顶点事件总线上的地址的消费者?

How to list all consumers that are listening to an address on a vertex event bus?

我有一个 vert.x 程序。我正在创建一个消息使用者并将其附加到 vertx 事件总线上的地址上。稍后在程序中我将注销该消费者。我怎么知道消费者是否注销成功?

以下代码片段展示了我如何在顶点事件总线上的地址上注册消费者

MessageConsumer<JsonObject> consumer = vertx.eventBus().consumer("my_channel", eventHandler)

一段时间后我取消注册消费者

consumer.unregister( res -> {
  if(res.succeeded()) { System.out.println("consumer deregistered")}
});

所以我的问题是,假设我引用了一个 vertx 事件总线 vert.eventBus() 对象,如果上面有任何消费者,我该如何验证它?

至于第一个问题,您可以安全地假设当 res.succeeded() returns trueunregister 处理程序中时消费者已成功取消注册(根据您的示例)。

对于第二部分,afaik事件总线不维护注册到它的消费者列表,你必须自己维护它。目标是拥有一个地图或其他一些集合,当您使用 .consumer(...) 方法注册消费者时,您可以在其中存储消费者的引用,并在 unregister 处理程序 returns 成功后将其删除。

我认为这就是您所指的问题(根据 vertx 首席架构师的建议):https://groups.google.com/g/vertx/c/d70YlHLL7KU?pli=1