NMS.ActiveMQ 回溯消費者

背景

回溯消費者只是一個常規的 NMS 消費者,它表示在訂閱開始時,應盡一切努力回溯時間,並發送消費者可能錯過的任何舊訊息(或該主題上發送的最後一條訊息)。

請參閱訂閱恢復策略以了解更多詳細資訊。

範例

您可以按照以下方式將消費者標記為回溯式

var topic = session.GetTopic("TEST.Topic?consumer.retroactive=true");
var consumer = session.CreateConsumer(topic);

限制

當在代理程式網路中使用時,回溯消費者將無法穩定運作。

就主題而言,當我們將代理程式 A 連接到代理程式 B 時,代理程式 B 會將它收到的所有訂閱發送給代理程式 A。由於代理程式 A 會將訊息複製到每個訂閱,並且我們希望避免在代理程式 B 接收重複的訊息,因此我們不能為同一個主題向代理程式 A 發送一個以上的訂閱。因此,我們的網路橋接器會追蹤已發送的訂閱,並且僅將第一個訂閱發送到主題。後續的訂閱會增加訂閱的引用計數,但訂閱實際上並未發送。

這本質上就是問題所在。如果主題的第一個訂閱不是回溯的,它會從 B 發送到 A,並且 B 代理程式將不會收到回溯訊息。然後,後續的訂閱可能是(回溯的),但它不會導致回溯訊息從代理程式 A 發送到代理程式 B,因為後續的訂閱不會發送到代理程式 A。

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛標誌和 Apache ActiveMQ 專案標誌是 Apache 軟體基金會的商標。版權所有 © 2024,Apache 軟體基金會。根據Apache 授權 2.0授權。