Websphere編程之路--MQ編程初探

IBM Websphere MQ 編程主要有兩部分:一是 MQ 系統管理編程;一是 MQ 應用開發編程。

1  MQ 編程概述

  IBM Websphere MQ 編程主要有兩部分:一是 MQ 系統管理編程;一是 MQ 應用開發編程。

MQ 系統管理編程:

  所謂的 MQ 系統管理編程是指使用 MQ 提供的編程接口,編制特定的應用程序,來進行對 MQ 各種對象的監控和管理,如:查詢通道的狀態、隊列的深度等運行時狀態,查詢隊列管理器的屬性,隊列的屬性或通道的屬性等靜態參數;以及對 MQ 進行各種操作,如:啓動 / 停止通道,創建 / 刪除各種對象,修改各種對象的屬性等。

  實際上, MQ 爲我們提供了多種系統管理的手段,其中包括: 利用 MQ 的圖形管理界面進行操作、監控和管理: MQ 資源管理器爲用戶提供了良好的管理界面,從而方便用戶對中間件系統的配置和管理工作,通過 MQ 資源管理器,用戶可以定義、修改、刪除中間件的各種資源、對象,察看各種對象的屬性,監控各種對象的運行狀態; 利用 MQSC 命令,通過命令行的方式對 MQ 進行操作、監控和管理,尤其值得一提的是 MQSC 命令在各個平臺上都是相同的,在一個有若干平臺共存的系統中大大地方便和簡化了系統管理的工作。 通過特定的系統管理工具進行監控和管理, MQ 不僅自身提供了 GUI 和文本化監控工具來監測和顯示對象的狀態 , 並且能夠利用各類系統管理軟件對整個網絡運行狀況實施監控;如 Tivoli Manager for MQ 就是一個功能強大的綜合管理工具:它爲控制消息和應用程序框架提供了一個集中管理平臺。它捕獲和顯示 MQ 的事件,並能發現新的隊列管理器以及相應的對象,這些對象可以通過中央控制檯進行定義和配置。除此之外,許多第三方廠家也提供有類似的管理工具。

  除了以上這三種管理手段之外, MQ 還提供了系統管理的編程接口,通過該接口用戶可以編寫應用程序從而進行自動化的實時監控及管理。 MQ 的系統管理接口有兩種,即 Programmable Command Format (可編程命令格式,簡稱 PCF )和 MQ Administration Interface ( MQ 管理接口,簡稱 MQAI )。

MQ 應用開發編程:

  MQ 的應用開發編程主要是指使用 MQI , AMI , ActiveX 編程接口來進行消息的發送和接受以及相關的應用開發的工作。

MQI 即 Message Queue Interface

  它提供的基礎而豐富的編程接口,而且也提供了最全面的操作組。。它的使用比較廣泛,支持大部分平臺和程序語言。

  比如:操作系統支持 AS/400 、 SunOS 、 AIX 、 Windows 等,編程語言支持 C 、 C++ 、 VB 、 PL/I 、 COBOL 、 RPG 、 Delphi 等。

  MQI 可以用來處理: 連接和斷開連接一個隊列管理器 打開和關閉隊列對象 發送、瀏覽和獲得消息 查詢和設置對象屬性事務處理管理 消息分組

AMI 即 Application Message Interface

  其可向程序員提供一種可以用於處理隊列管理器對象非常簡單的接口。利用 AMI ,程序員不必深入瞭解所有 MQI 調用,他們只要專注於應用程序的商業邏輯即可。這就意味着在編程時出現的錯誤更少,具有更高的處理業務及技術改變的靈活性。 AMI 減少了編寫新應用程序所需的代碼數量。

  可採用以下方式發送和接收消息 AMI : 發送 - 遺忘,不需要回復 分配表,將消息發送到多個目的地 請求 / 回覆,發送消息的應用程序需要請求消息的回覆 發佈 / 預訂,由代理管理消息的分配 2, MQ Delphi 開發

  由於網上關於 MQ 的開發資料比較少,在最近的一個項目中,有人需要用 MQ 來做開發,由於多 MQ 的編程不是很瞭解,所以不知道 Delphi 和 MQ 之間是如何關聯的。

  在 MQ 的編程模式中,目前我查證的資料中,只有 MQI 是支持 Delphi 開發的,另外由於 Delphi 的第三方組件也比較多,美國有一家公司提供了一個 Delphi for MQ 的組件,使用起來非常簡單,可惜該組件需要收費。

  Delphi 採用了 MQI 接口,官方也提供了文檔指導

http://www-1.ibm.com/support/docview.wss uid=swg24007060 ,文檔說明了 Delphi MQI 的 API 接口和 C 的類似,官方的編程 MQI 編程指導手冊對於 Delphi 同樣也很適用。在 C 語言中使用了指針並且使用了另外一種定義字符串長度的方式,就是在結尾處用 #0 做標記;在 Pascal 中, @ 操作符被用來傳遞指針的值。 3, 實例

MQI 的編程用的最多的主要是 13 個常見函數的調用:

MQCONN

MQCONNX

MQDISC

MQOPEN

MQCLOSE

MQPUT1

MQPUT

MQGET

MQINQ

MQSET

MQBEGIN

MQCMIT

MQBACK

1 MQCONN 演示

  今天展示的一個實例就是演示成功的打開對隊列管理器進行連接,並學習一些相關的概念。

系統環境: Win2000 Pro + SP4, MQ5.3,Delphi7

Delphi中需要創建一個窗體,一個Memo,一個Button

procedure TForm1.btnCoonClick(Sender: TObject);

var

Hconn : MQHCONN; //連接句柄

CompCode, Reason : MQLONG; //完成代碼,原因代碼

QMgrName : string; //隊列管理器的名字,這裏沒有用MQ的自定義類型變量

begin

QMgrName := 'DMQ';//
MQCONN ( PChar(QMgrName),

// pchar相當於C裏面的char *,以#0結尾,但在使用中不必爲它分配內存

HConn,

Compcodehttp://www.cztongda.com,

Reason);


{CompCode有四種狀態:MQCC_OK = 0;
MQCC_WARNING = 1;
MQCC_FAILED = 2;
MQCC_UNKNOWN = -1;}
if CompCode = MQCC_FAILED then

begin

Android上觸摸屏產生的事件爲什麼與模擬器產生的有不同

>Memo1.Lines.Add('連接失敗');

Memo1.Lines.Add('連接的隊列管理器的名字是http://www.0755gree8.com/sort/3:'+QMgrname);

Memo1.Lines.Add(IntToStr(Reason));

end;

if CompCode = MQCC_WARNING then

begin

Memo1.Lines.Add('警告');

end;

if CompCode = MQCC_OK then

Memo1.Lines.Add('連接成功');

end;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章