NMS.ActiveMQ 鏡像佇列

鏡像佇列

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

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

因此,為了方便監控佇列,我們加入了一個稱為鏡像佇列的功能。鏡像佇列有點像對訊息代理程式中所有佇列的零配置線路偵聽

範例

例如,假設我們有許多生產者傳送到佇列 Foo.Bar,而消費者從佇列 Foo.Bar 取用,而我們想要監控或查看活動。

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

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

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

鏡像佇列如何運作

啟用後,鏡像佇列會將每個傳送到佇列的訊息也傳送到名稱類似的主題;以便那些有興趣觀看佇列上訊息交換的人可以從鏡像佇列主題取用。

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

啟用鏡像佇列

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

要啟用鏡像佇列,請在BrokerService上設定 useMirroredQueues 屬性,或在 [Xml 設定](../xml-Community/FAQ/configuration.md) 中的元素內加入以下內容

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

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

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