鏡像佇列

功能 > 目的地功能 > 鏡像佇列

鏡像佇列

佇列提供了一個絕佳的可靠且高效能的負載平衡機制。放置在佇列上的每個訊息只能由單一消費者成功處理。這是一件好事! (微笑)。然而,有時您會想監控訊息在佇列上的生產者和消費者之間的流動情況。

為此,您可以使用虛擬目的地來設置一個虛擬佇列,將訊息轉發到多個實體佇列。但是,為系統中的每個佇列啟用此功能可能會很麻煩。

因此,為了讓監控佇列變得容易,我們添加了一個名為鏡像佇列的功能。鏡像佇列有點像在您的訊息代理程式中所有佇列上進行零配置的線路監聽

範例

例如,假設我們有多個生產者發送到佇列 Foo.Bar,消費者從佇列 Foo.Bar 中消費,並且我們想監控或查看活動。

如果您啟用鏡像佇列,那麼預設情況下,您可以訂閱主題 VirtualTopic.Mirror.Foo.Bar,並接收所有發送到佇列 Foo.Bar 的訊息。由於它是一個主題,因此可以根據需要讓多個消費者訂閱此主題。

如果您願意,您可以將此功能與虛擬主題一起使用;這樣您就可以定義一個邏輯消費者,例如稱為 A。然後您可以訂閱佇列 Consumer.A.VirtualTopic.Mirror.Foo.Bar,以接收發送到佇列 Foo.Bar 給消費者 A 的所有訊息。然後,您可以執行此消費者的多個實例,它們可以在彼此之間進行負載平衡。

鏡像佇列和虛擬目的地的這種組合對於監控交易流程非常有用;例如,使用業務活動監控 (BAM)

鏡像佇列如何運作

啟用後,鏡像佇列會導致發送到佇列的每個訊息也發送到名稱相似的主題;這樣,有興趣觀察佇列上的訊息交換的人員可以從鏡像佇列主題中消費。

當與上述範例中所述的此主題上的虛擬主題結合使用時,您實際上可以最終創建新的佇列,這些佇列是在執行時動態生成的給定佇列的鏡像!

啟用鏡像佇列

預設情況下,鏡像佇列是停用的;因為啟用它將導致為您使用的每個佇列建立一個虛擬主題。

若要啟用鏡像佇列,請在 BrokerService 上設定 useMirroredQueues 屬性,或在 [Xml Configuration](xml-configuration) 中的元素內新增以下內容

<destinationInterceptors>
    <mirroredQueue copyMessage = "true" postfix=".qmirror" prefix=""/>
</destinationInterceptors>

這會在您的代理程式上為每個佇列建立一個名為“*.qmirror”的主題。

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