![](/img/trans.png)
[英]How To Use ElasticSearch In Vertx Java With 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 以確定有多少消費者正在收聽。 該實現的問題:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.