NMS.ActiveMQ 鏡像佇列
鏡像佇列
佇列提供絕佳的可靠性和高效能負載平衡機制。放置在佇列中的每個訊息只能由單一消費者成功處理。這是件好事! 。然而,有時您會希望監控在佇列中的生產者和消費者之間流動的訊息。
為此,您可以使用虛擬目的地來設置一個虛擬佇列,將訊息轉發到多個實體佇列。然而,為系統中的每個佇列啟用此功能可能會很麻煩。
因此,為了方便監控佇列,我們加入了一個稱為鏡像佇列的功能。鏡像佇列有點像對訊息代理程式中所有佇列的零配置線路偵聽。
範例
例如,假設我們有許多生產者傳送到佇列 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
的主題。