訂閱恢復政策
訂閱恢復政策允許您在訂閱主題時回溯時間。
例如,假設您正在處理價格資訊;您正在使用聯合網路,並且發生網路故障或有人關閉了您正在連線的代理程式。如果您重新連線到叢集中的另一個代理程式,您可能會遺失訊息。
因此,我們支援定時或固定大小的恢復緩衝區,以便您在某段時間內重新連線到另一個代理程式(根據流量和 RAM,這可能是 30 秒到 5 分鐘),那麼您在停機期間遺失的任何訊息都會在新的訊息傳送給您之前重新傳送。
如需更多資訊,請參閱追溯消費者
最後影像快取
在金融市場資料類型世界中,通常需要知道 IBM 股票的最新價格,並同時取得價格的所有未來更新。在過去,您通常會有一個請求-回覆快照報價服務來取得最新價格,然後您會訂閱一個主題以取得更新。問題是客戶端需要處理 2 個 API/中介軟體(通常是完全不同的東西),而且還有一個排序問題(競爭條件)- 更新可能會比最後的價格請求更快,因此您可能會取得順序錯誤(回到過去的舊價格,這可能非常舊)。
我們的訂閱恢復政策實作之一稱為最後影像訂閱政策,它將確保當您訂閱一個主題(例如 PRICES.NASDAQ.IBM)時,您將收到最後的影像(該主題上傳送的最後一條訊息)加上未來發生的任何更新,並以排序方式確保最後的影像始終在任何新訊息到達之前。
在市場資料類型情況下,一個常見的問題是您可能有一個最後影像價格的快取,然後有一個新價格變更的資訊流;如果您從快取請求最後價格並訂閱新價格;根據您的做法,您可能會錯過更新,或在舊的最後影像到達之前收到較新的更新(因此會取得順序錯誤的訊息)。
請注意,您可以在不同的目的地或萬用字元上設定訂閱恢復政策以及大多數其他政策。因此,您可能僅針對主題上的價格使用最後影像政策,並針對不同主題上的其他通知使用緩衝的固定大小政策等。
可用恢復政策摘要
政策名稱 | 範例設定 | 說明 |
---|---|---|
FixedSizedSubscriptionRecoveryPolicy | <fixedSizedSubscriptionRecoveryPolicy maximumSize="1024"/> |
在 RAM 中保留固定數量的記憶體,用於訊息歷史記錄,並按時間順序清除。 |
FixedCountSubscriptionRecoveryPolicy | <fixedCountSubscriptionRecoveryPolicy maximumSize="100"/> |
保留固定數量的最後訊息。 |
LastImageSubscriptionRecoveryPolicy | <lastImageSubscriptionRecoveryPolicy/> |
僅保留最後一條訊息。 |
NoSubscriptionRecoveryPolicy | <noSubscriptionRecoveryPolicy/> |
停用訊息恢復。 |
QueryBasedSubscriptionRecoveryPolicy | <queryBasedSubscriptionRecoveryPolicy query="JMSType = 'car' AND color = 'blue'"/> |
執行使用者特定的查詢機制,以載入他們可能遺失的任何訊息。有關訊息選取器的詳細資訊,請參閱此處 |
TimedSubscriptionRecoveryPolicy | <timedSubscriptionRecoveryPolicy recoverDuration="60000" /> |
在記憶體中保留訊息的定時緩衝區,並使用它來恢復新的訂閱。恢復時間以毫秒為單位。 |
RetainedMessageSubscriptionRecoveryPolicy | <retainedMessageSubscriptionRecoveryPolicy/> |
保留最後一條 ActiveMQ.Retain 屬性設定為 true 的訊息 |