在
WebSphere MQ程序設計初探
一文中
討論了從MQ隊列管理器的本地隊列中放置和讀出消息的程序
本文主要通過兩台機器
搭建MQ消息傳輸的環境
並編寫測試程序進行測試
第一准備工作准備
台Win
環境(XP也可)
通過以太網連通
機器A
代碼為
IP地址為
機器B
代碼為
IP地址為
安裝MQ
第二創建MQ對象A機器上
打開
WebSphere MQ資源管理器
新建隊列管理器
名稱為QM_
其余采用默認設置;
在QM_
隊列管理器中創建本地隊列
名稱為LQ_
;
創建傳輸隊列
名稱為XQ_
(新建時選擇
本地隊列
將
用法
設置為
傳輸
);
創建遠程隊列定義
名稱為RQ_
指定遠程隊列名稱為LQ_
遠程隊列管理器名稱為QM_
傳輸隊列名稱為XQ_
;
創建發送方通道
名稱為
傳輸協議為TCP/IP
連接名稱為
(
)
傳輸隊列為XQ_
;
創建接受方通道
名稱為
采用默認設置
創建服務器連接通道
名稱為DC
SVRCONN
采用默認設置(該通道主要給後面的測試程序使用)
B機器和A機器上的操作一樣
只是命名不同
如下
打開
WebSphere MQ資源管理器
新建隊列管理器
名稱為QM_
其余采用默認設置;
在QM_
隊列管理器中創建本地隊列
名稱為LQ_
;
創建傳輸隊列
名稱為XQ_
(新建時選擇
本地隊列
將
用法
設置為
傳輸
);
創建遠程隊列定義
名稱為RQ_
指定遠程隊列名稱為LQ_
遠程隊列管理器名稱為QM_
傳輸隊列名稱為XQ_
;
創建發送方通道
名稱為
傳輸協議為TCP/IP
連接名稱為
(
)
傳輸隊列為XQ_
;
創建接受方通道
名稱為
采用默認設置
創建服務器連接通道
名稱為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_
;
private static String qName =
RQ_
;
private static MQQueueManager qMgr;
private static Hashtable properties = new Hashtable();
public static void main(String args[]) {
try {
properties
put(
hostname
);
properties
put(
port
new Integer(
));
properties
put(
channel
DC
SVRCONN
);
properties
put(
CCSID
new Integer(
));
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 =
;
// 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
+ pletionCode +
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_
中檢查是否有消息存在
如果有說明測試成功
讀者可以自行編寫把消息從對方的本地隊列讀取出來的程序
如果讀者對以上的內容有任何疑問
可以和我聯系
版權所有
嚴禁轉載
參考資料
《WebSphere MQ System Administration Guide》Third edition (May
)
SC
《WebSphere MQ Using Java》Third edition (January
)
SC
附件
MQTest
java(
K)
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19760.html