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。