2012-11-08 94 views
3

如何設置MQ以便將收到的每條消息立即寫入文件系統? 我有「紅皮書」,但至少需要有人至少將我指向書中的一章或標題才能找出答案。MQ(Websphere 7)將消息持久存儲到文件系統

我們是一家.NET商店。我已經通過API編寫了C#讀取隊列,並且我們當前使用了BizTalk MQ適配器。我們的最終目標是將相同的消息寫入文件系統中的多個目錄,以「克隆」我們各種測試環境(DEV,STAGE,TRAINING等)的提要。 BizTalk的問題在於,當我們使用消息時,我們將它同時映射到一條新消息,所以消息已經被更改,並且我們希望原始消息被克隆,而不是變形消息。我們的供應商不提供多個供稿副本,例如,他們提供DEV和PROD,但我們內部有4個系統。

我想我可以做一個C#Windows服務來做到這一點,但我寧願使用MQ的內置功能,如果可能的話。

回答

2

沒有配置要求。如果消息是持久的,WMQ將它寫入磁盤。不過,我認爲這不會對你有所幫助,因爲它們不是作爲離散消息寫成的。沒有要複製的磁盤文件,複製僅適用於複製的QMgr與主節點相同且在複製過程中處於脫機狀態。

這個問題有很多解決方案,但從WMQ V7開始,最簡單的方法就是使用內置的Pub/Sub功能。這假設這些消息是通過QMgr到QMgr通道到達,然後在隊列中着陸,然後消耗它們。

在這種情況下,可以刪除隊列並在主題上創建同名的別名。然後,您創建一個新隊列並定義一個管理預訂,將該主題上的消息傳遞到新隊列中。您的應用程序從新隊列中消耗。

當您需要將訂閱源發送到另一個QMgr或應用程序時,定義一個新的訂閱並將其指向新的目標隊列。由於這是Pub/Sub,因此MQ將複製原始消息的次數與訂閱次數相同,並且第一個應用程序及其消息不受影響。如果您需要發送到的目的地不能通過MQ通道訪問(例如,DEV和QA未連接),則可以將消息發送到新隊列,使用SupportPac MO03中的QLoad將它們寫入文件,然後使用另一個QLoad實例將它們加載到不同的QMgr上。如果您想實時移動它們,可以從SupportPac MA01設置Q程序,將它們從QMgr1上的新訂閱隊列直接移至QMgr2上的目標隊列。並且您可以根據需要複製儘可能多的系統。

SupportPacs主頁面是here

如果您正在使用的是紅皮書,您可能需要查看Infocenters。請務必使用與您正在使用的WMQ版本相匹配的Infocenter。

+0

我熟悉的BizTalk的pub/sub,但是我的經驗MQ是有限的。發佈/訂閱是來自Support Pacs,還是在WebSphere MQ Explorer中設置的?我知道有一些支持Pacs,但沒有意識到這麼多...謝謝,大量的閱讀工作。 – NealWalters

+0

支持的版本(V7.0及更高版本)pub/sub內置於QMgr中。除了授權發佈者和訂閱者以外,沒有其他設置。例如,如果您想以管理員身份進行操作,只需抓取示例程序(如amqspub或amqssub)併發布或訂閱任何主題字符串即可。對於非管理員用戶,您需要先授權他們,並且需要定義一個實際的主題對象來指定auths配置文件。轉到[這裏](http://www.youtube.com/watch?v=wSCHLBftjDw&feature=share&list=UUb6NRnkyBVgR6fjYPR8reoA)爲例(跳到最後)。 –

+0

我正在閱讀MO03中的QLoad上的PDF。我是否可以安排QLoad隨後每隔x秒或幾分鐘運行一次Task Scheduler?我不希望一次性卸載,而是連續卸載,實際上在每封郵件到達後儘快卸載。似乎應該是事件驅動。從我目前看到的,QLOAD是一個命令行程序。 – NealWalters