2011-09-26 27 views
2

這個問題涉及到我無法找到常規解決方案的一個非常常見的問題。數據扇出Java庫

下面是設置:

  1. 你有一個消費者,每一個訂閱一組符號
  2. 你有一些生產商對這些符號的不相交的子集,每生產數據
  3. 消費者可能太慢以至於無法對其訂購的符號進行所有更改,因此您可能需要進行節流
  4. 消費者只對每個 符號的最新數據感興趣。如果消費者錯過了符號的更新,並且有新的數據可用,那麼只應發送最新的數據。

我遇到過這個問題很頻繁,每次都不得不重新發明輪子,比如實現一個隊列,其中未消耗的數據可以被更新的數據替換。我想知道是否有一些庫以有效的方式實現瞭解決方案。

+0

在這種情況下'訂閱'是什麼意思?消費者在新符號到達時是否應該通知消費者?每個符號的子集是分配給不同的數據結構,還是都是混合的? – vemv

回答

0

聽起來就像您正在發佈市場數據饋送,您希望客戶訂閱特定的訂閱源,除此之外,您不需要一個隊列,因爲您不需要處理每個數據消息。 使用UDP作爲您的傳輸協議來發布市場數據,因爲UDP在發送下一個數據包之前不需要確認其數據包已被接收。客戶端應該緩存它們接收到的最後一個值,並且不需要維護一個隊列。然後,您可以讓觀察者看到最後一個值,並在發生更改時將其發佈到其他應用程序中。