WebSphere MQ傳輸環境搭建和測試

CloudSpace發表於2009-11-18
在“WebSphere MQ程式設計初探”一文中,討論了從MQ佇列管理器的本地佇列中放置和讀出訊息的程式,本文主要通過兩臺機器,搭建MQ訊息傳輸的環境,並編寫測試程式進行測試。     第一、準備工作
準備2臺Win2000環境(XP也可),通過乙太網連通。
機器A:程式碼為00000000,IP地址為:10.1.1.1
機器B:程式碼為88888888,IP地址為:10.1.1.2
安裝MQ 5.3

    第二、建立MQ物件
    A機器上:
1、開啟“WebSphere MQ資源管理器”,新建佇列管理器,名稱為QM_00000000,其餘採用預設設定;
2、在QM_00000000佇列管理器中建立本地佇列,名稱為LQ_00000000;
3、建立傳輸佇列,名稱為XQ_88888888(新建時選擇“本地佇列”,將“用法”設定為“傳輸”);
4、建立遠端佇列定義,名稱為RQ_88888888,指定遠端佇列名稱為LQ_88888888,遠端佇列管理器名稱為QM_88888888,傳輸佇列名稱為XQ_88888888;
5、建立傳送方通道,名稱為00000000.88888888,傳輸協議為TCP/IP,連線名稱為10.1.1.2(1414),傳輸佇列為XQ_88888888;
6、建立接受方通道,名稱為88888888.00000000,採用預設設定;
7、建立伺服器連線通道,名稱為DC.SVRCONN,採用預設設定(該通道主要給後面的測試程式使用)。
    B機器和A機器上的操作一樣,只是命名不同,如下:
1、開啟“WebSphere MQ資源管理器”,新建佇列管理器,名稱為QM_88888888,其餘採用預設設定;
2、在QM_88888888佇列管理器中建立本地佇列,名稱為LQ_88888888;
3、建立傳輸佇列,名稱為XQ_00000000(新建時選擇“本地佇列”,將“用法”設定為“傳輸”);
4、建立遠端佇列定義,名稱為RQ_00000000,指定遠端佇列名稱為LQ_00000000,遠端佇列管理器名稱為QM_00000000,傳輸佇列名稱為XQ_00000000;
5、建立傳送方通道,名稱為88888888.00000000,傳輸協議為TCP/IP,連線名稱為10.1.1.1(1414),傳輸佇列為XQ_00000000;
6、建立接受方通道,名稱為00000000.88888888,採用預設設定;
7、建立伺服器連線通道,名稱為DC.SVRCONN,採用預設設定。

    第三、訊息測試
    在A、B機器上分別啟動其傳送方通道,正常情況通道狀態應為“正在執行”。
通過如下測試程式進行測試,檔名為:MQTest.java,在機器A上進行執行(如在B上執行請讀者自行適當修改)。
import java.io.IOException;import java.util.Hashtable;import com.ibm.mq.MQException;import com.ibm.mq.MQMessage;import com.ibm.mq.MQPutMessageOptions;import com.ibm.mq.MQQueue;import com.ibm.mq.MQQueueManager;public
class MQSample{//定義佇列管理器和佇列的名稱
private
static String qmName =
"QM_00000000";private
static String qName =
"RQ_88888888";private
static MQQueueManager qMgr;private
static Hashtable properties =
new Hashtable();public
static
void main(String args[]) {try {properties.put("hostname", "10.1.1.1");properties.put("port", new Integer(1414));properties.put("channel", "DC.SVRCONN");properties.put("CCSID", new Integer(1381));properties.put("transport","MQSeries");// Create a connection to the queue manager
qMgr =
new MQQueueManager(qmName,properties);// Set up the options on the queue we wish to open...
int openOptions =
16;// Now specify the queue that we wish to open,// and the open options...
MQQueue remoteQ = qMgr.accessQueue(qName, openOptions);// Define a simple WebSphere MQ message, and write some text in UTF format..
MQMessage putMessage =
new MQMessage();putMessage.writeUTF("Test");// specify the message options...
MQPutMessageOptions pmo =
new MQPutMessageOptions();// accept the defaults, same as MQPMO_DEFAULT// put the message on the queue
remoteQ.put(putMessage,pmo);System.out.println("Message has been input into the Remote Queue");// Close the queue...
remoteQ.close();// Disconnect from the queue manager
qMgr.disconnect();}catch (MQException ex) {// If an error has occurred in the above, try to identify what went wrong// Was it a WebSphere MQ error?
System.out.println("A WebSphere MQ error occurred : Completion code "
+ ex.completionCode +
" Reason code "
+ ex.reasonCode);}catch (IOException ex) {// Was it a Java buffer space error?
System.out.println("An error occurred whilst writing to the message buffer: "
+ ex);}catch(Exception ex){ex.printStackTrace();}}}

    執行程式後,請在B機器的本地佇列LQ_88888888中檢查是否有訊息存在,如果有說明測試成功。讀者可以自行編寫把訊息從對方的本地佇列讀取出來的程式。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14789789/viewspace-478247/,如需轉載,請註明出處,否則將追究法律責任。

相關文章