簡體   English   中英

VertX EventBus 通道上有多少消費者?

[英]How many Consumers on a VertX EventBus Channel?

我想在 EventBus 頻道上發布一條消息,並收到收聽該頻道的每個人的回復。 問題是,如果我不知道期望有多少回復,我怎么知道每個人都已經回復了?

我假設我需要知道有多少消費者才能知道我是否已經收到所有回復。

有沒有辦法知道目前有多少消費者正在“收聽”Vert.x EventBus 地址?

EventBus 在“盡力而為”的基礎上工作,因此即使您可以跟蹤訂閱者的數量,他們中的一些人也有可能永遠不會回復您的消息。

如果您仍然願意嘗試,我可以想到幾種方法。 沒有一個是真正推薦的,但我會盡量強調優缺點。

一種是通過反射獲取handlerMap內部EventBusImpl的引用。 https://github.com/eclipse-vertx/vert.x/blob/master/src/main/java/io/vertx/core/eventbus/impl/EventBusImpl.java#L48

如果你得到它一次,當你的應用程序啟動時,那應該會對性能產生很大的影響。 當然,如果 Vert.x 團隊決定盡可能多地更改字段名稱,那將在運行時中斷。

另一種選擇是使用vertx.sharedData() ,例如getLocalMap() 所有消費者將自己添加到 map,生產者將檢查 map 以確定有多少消費者正在收聽。 該實現的問題:

  1. 很多邏輯來實現這個
  2. 注銷消費者很難(不能保證消費者能夠注銷自己)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM