2012-11-13 141 views

回答

3

有幾種方法可以做到這一點。

  1. 將Windows設置控制應用起來(因爲你提到的QMGR是Windows)的應用程序將運行作爲一種服務,以恢復選項,如果服務無法重新啓動它。應用程序將被編程(或者在Q的情況下被配置)以使用具有很長等待時間的GET來處理隊列。當QMgr不可用時,需要進行一些額外的錯誤處理才能做出明智的決定。這適用於將消息複製到多個隊列,但不適用於隊列到文件,因爲該文件永遠不會關閉。
  2. 將該應用程序作爲WebSphere MQ服務運行。使用CONTRIL(QMGR)定義SERVICE對象會導致MQ在QMgr啓動時啓動服務,並在QMgr關閉時停止它。由於該服務是QMgr的子進程,因此當QMgr不可用時無需擔心如何處理錯誤。
  3. 基於非零隊列深度觸發程序。定義描述要執行的命令的進程對象,使用TRIGTYPE(FIRST)啓用隊列上的觸發並運行觸發器監視器。只要隊列的深度> 0且沒有打開的輸入句柄,過程對象就會觸發並執行命令。你開始的事情必須知道如何解析命令行,所以如果你有其他人的可執行文件,最簡單的事情就是使用腳本來啓動它。該腳本解析觸發器消息並觸發可執行文件。或者,腳本可能忽略觸發器消息,只運行exe。我通常使用Korn Shell或Perl,並且都可以在Windows上使用。

我寫展示如何使事件隊列使用Q的觸發版本本文假定您想要的隊列仍然大多客滿,採用觸發約80%的深度填充的文章。只要隊列深度變爲非零,就可以使用相同的技術(順便說一下,在一個更簡單的實現中)來啓動Q程序。

UPDATE
大概應該有鏈接文章。 ;-)
Mission:Messaging: Easing administration and debugging with circular queues

相關問題