ibmmq 通道命令_IBM WebSphere MQ 7.5基本用法
一、下載7.5 Trial版本
這是下載網(wǎng)址,下載前先必須注冊IBM ID,下載完成后一路Next即可(注:windows上安裝時,會詢問是否域環(huán)境,初次學(xué)習(xí)時,為簡單起見,建議選擇No)
安裝完成后,MQ的Bin目錄會自動添加到環(huán)境變量Path中,以后就可以直接用Dos命令行窗口操作(當(dāng)然,也可以用圖形化GUI方式通過IBM WebSphere MQ Explorer來管理)
注:安裝時,強烈建議用管理員Administrator身份安裝,否則安裝完成后,有可能license無法生效、runmqsc命令模式下無法正常執(zhí)行命令.
二、創(chuàng)建隊列管理器
WIN?+ R鍵,輸入cmd,進(jìn)入命令行窗口,鍵入:
crtmqm QM_TEST
創(chuàng)建一個隊列管理器QM_TEST(你可以改成自己想要的名字),如果把整個MQ理解成一個數(shù)據(jù)庫實例,QM_TEST相當(dāng)于就是db instance中的schema(或user)
命令行創(chuàng)建的隊列管理器默認(rèn)是不活動狀態(tài)的,可以用
strmqm QM_TEST
來啟動隊列管理器
三、創(chuàng)建隊列
如果說“隊列管理器”是db中的schema,那么"隊列"就相當(dāng)于db中的Table了,而隊列中的每條"消息",就相當(dāng)于Table中的每條記錄,繼續(xù)在命令行窗口模式下,輸入
runmqsc QM_TEST
將進(jìn)入MQ的交互命令模式,繼續(xù)輸入
define qlocal(Q1)
將創(chuàng)建一個本地隊列Q1(你可以改成自己需要的名字),如果此時你打開 "開始菜單->程序->IBM WebSphere MQ->WebSphere MQ Explorer (Installation1)"也能同步在圖形界面下,看到這個隊列
最后鍵入end,退出MQ的交互命令模式。
四、發(fā)送消息
繼續(xù)在Windows命令模式下,輸入
amqsput Q1 QM_TEST
這里系統(tǒng)將處于等待用戶輸入的狀態(tài),隨便輸入一些消息,然后連敲二次回車,完成消息發(fā)送
五、接收消息
amqsget Q1 QM_TEST
把剛才的put換成了get,將從隊列管理器QM_TEST的隊列Q1中,把消息取出來
六、進(jìn)階指南
熟悉以上命令行操作后,還可以用圖形化的操作方式再強化一遍(建議還是多用命令行模式,因為有些操作只能用命令行完成,比如后面要提到的修改隊列管理器編碼)
WebSphere MQ Explorer中,從"幫助"菜單里調(diào)出幫助文檔,里面有一個不錯的教程,強烈推薦新手看一遍
不過,"教程2:將消息發(fā)送至遠(yuǎn)程隊列"這里,幫助文檔上有幾個細(xì)節(jié)沒講透,導(dǎo)致初次用命令行照著做,可能會不成功,幾個要點如下:
1、通道命名問題
發(fā)送方與接收方的通道名稱,必須一樣,這樣二邊才能對應(yīng)起來
2、接收方必須要有偵聽器,而且要處于激活狀態(tài)
3、發(fā)送方的發(fā)送通道中,連接名稱格式為:"(接收方-隊列管理器-偵聽器的TCP端口) ,不包括"<>“,比如比如:yangjm(1514)或172.12.134.14(1514)
4、發(fā)送方的發(fā)送通道必須處于激活狀態(tài),如果通道啟動失敗,嘗試右鍵->ping/復(fù)位,如果還不行,檢查上述要點1-3是否設(shè)置有問題
七、遠(yuǎn)程連接問題
圖形方式添加“遠(yuǎn)程隊列管理器”時,如果遠(yuǎn)程隊列也是7.x或以上版本,當(dāng)前登錄用戶是管理員時,將提示權(quán)利不足,拒絕連接,原因是7.0以上,MQ提高了安全性,會默認(rèn)攔截管理員,詳情可參考IBM上的解釋 http://www-01.ibm.com/support/docview.wss?uid=swg21636532
解決方式:
1. 更換當(dāng)前用戶,建一個mqm用戶組(MQ安裝后,會默認(rèn)創(chuàng)建該Windows用戶組)的用戶,然后以該用戶身份登錄操作
2.參考IBM上的解釋,如果出于學(xué)習(xí)目的,最簡單的做法,就是在runmqsc交互模式下,鍵入
ALTER QMGR CHLAUTH(DISABLED)? 直接關(guān)閉通道認(rèn)證(生產(chǎn)環(huán)境不推薦這么做)
另外,要想本機上的隊列能被遠(yuǎn)程管理,前提是該隊列管理器允許遠(yuǎn)程管理,操作方式:隊列管理器上右擊->選擇"遠(yuǎn)程管理...",接下來的事情大家都知道
八、字符集編碼問題
每個隊列管理器,都有一個CCSID的屬性,對應(yīng)的就是字符集編碼,在windows系統(tǒng)中,這個編碼應(yīng)該是1381,如果你是用其它OS(比如linux)的配置通過腳本導(dǎo)入MQ的,可能編碼就不是1381了,這會導(dǎo)致在windows上無法連接\啟動隊列管理器,可以通過MQ交互命令行修改,
runmqsc QM_TEST 進(jìn)入QM_TEST的MQ交互模式
DISPLAY QMGR CCSID 查看當(dāng)前的CCSID屬性
ALTER QMGR CCSID(1381) 修改字符集編碼為1381
九、如何從“試用版”升級成“正式版”
試用版默認(rèn)只能用90天,到期后,如果購買了正式版的license,可以通過命令行導(dǎo)入license,命令如下:
setmqprd x:\license\amqpcert.lic
注:amqpcert.lic中的P即代表這是Product生產(chǎn)版本,setmqprd 后面的路徑即為license文件的所在路徑
十、java連接示例代碼
importcom.ibm.mq.MQC;importcom.ibm.mq.MQEnvironment;importcom.ibm.mq.MQException;importcom.ibm.mq.MQGetMessageOptions;importcom.ibm.mq.MQMessage;importcom.ibm.mq.MQPutMessageOptions;importcom.ibm.mq.MQQueue;importcom.ibm.mq.MQQueueManager;/** 可以在MQ的資源管理器的某一個隊列上放入測試消息、瀏覽消息等
* 可以放入多條消息,按先進(jìn)先出的方式取得*/
public classMQTest {private String qManager;//QueueManager名
privateMQQueueManager qMgr;privateMQQueue qQueue;
String HOST_NAME;int PORT = 0;
String Q_NAME;
String CHANNEL;intCCSID;
String Msg;public voidinit() {try{
HOST_NAME= "yangjm";//Hostname或IP
PORT = 1414;//要有一個偵聽器,處于活動狀態(tài),且監(jiān)聽1414端口
qManager = "QM_APPLE";
Q_NAME= "Q1";//Q1是一個本地隊列
CHANNEL = "DC.SVRCONN";//QM_APPLE上要建一個名為DC.SVRCONN的服務(wù)器連接通道
CCSID = 1381; //表示是簡體中文,//CCSID的值在AIX上一般設(shè)為1383,如果要支持GBK則設(shè)為1386,在WIN上設(shè)為1381。
MQEnvironment.hostname= HOST_NAME; //安裝MQ所在的ip address
MQEnvironment.port = PORT; //TCP/IP port
MQEnvironment.channel=CHANNEL;
MQEnvironment.CCSID=CCSID;
qMgr= newMQQueueManager(qManager);int qOptioin = MQC.MQOO_INPUT_AS_Q_DEF |MQC.MQOO_INQUIRE|MQC.MQOO_OUTPUT;
qQueue=qMgr.accessQueue(Q_NAME, qOptioin);
}catch(MQException e) {
System.out
.println("A WebSphere MQ error occurred : Completion code "
+ e.completionCode + " Reason Code is "
+e.reasonCode);
}
}voidfinalizer() {try{
qQueue.close();
qMgr.disconnect();
}catch(MQException e) {
System.out
.println("A WebSphere MQ error occurred : Completion code "
+ e.completionCode + " Reason Code is "
+e.reasonCode);
}
}/** 取過一次,下次就沒有了*/
public voidGetMsg() {try{
MQMessage retrievedMessage= newMQMessage();
MQGetMessageOptions gmo= newMQGetMessageOptions();
gmo.options+=MQC.MQPMO_SYNCPOINT;
qQueue.get(retrievedMessage, gmo);int length =retrievedMessage.getDataLength();byte[] msg = new byte[length];
retrievedMessage.readFully(msg);
String sMsg= newString(msg);
System.out.println(sMsg);
}catch(RuntimeException e) {
e.printStackTrace();
}catch(MQException e) {if (e.reasonCode != 2033) //沒有消息
{
e.printStackTrace();
System.out
.println("A WebSphere MQ error occurred : Completion code "
+e.completionCode+ " Reason Code is "
+e.reasonCode);
}
}catch(java.io.IOException e) {
System.out
.println("An error occurred whilst to the message buffer "
+e);
}
}public void SendMsg(byte[] qByte) {try{
MQMessage qMsg= newMQMessage();
qMsg.write(qByte);
MQPutMessageOptions pmo= newMQPutMessageOptions();
qQueue.put(qMsg, pmo);
System.out.println("The message is sent!");
System.out.println("\tThe message is " + new String(qByte, "GBK"));
}catch(MQException e) {
System.out
.println("A WebSphere MQ error occurred : Completion code "
+ e.completionCode + " Reason Code is "
+e.reasonCode);
}catch(java.io.IOException e) {
System.out
.println("An error occurred whilst to the message buffer "
+e);
}
}/***@paramargs*/
public static voidmain(String[] args) {
MQTest mqst= newMQTest();
mqst.init();try{
mqst.SendMsg("你好,Webshpere MQ 7.5!".getBytes("GBK"));
mqst.GetMsg();
}catch(Exception e) {
e.printStackTrace();
}
mqst.finalizer();
}
}
View Code
需要引用的jar包(在MQ的安裝目錄下都有)
十一、機器之間遷移
如果要在多臺機器上配置相同的隊列管理器,一臺臺機器去創(chuàng)建、設(shè)置十分繁瑣,可以用命令
dmpmqcfg -m?QM_TEST -A > C:\SCRIPT\QM_TEST_SCRIPT.DUMP
注:其中QM_TEST即為要導(dǎo)出的隊列管理器名稱,而 "QM_TEST_SCRIPT.DUMP"是導(dǎo)出腳本的文件名,可以隨便修改,執(zhí)行完后會在"C:\SCRIPT\"下生成一個“.dump”的腳本文件,這里我們借用了管道操作符號">"
在另一臺機器上,先把dump文件復(fù)制過去(比如就放在c盤根目錄下),然后按下列步驟執(zhí)行
crtmqm QM_TEST
strmqm QM_TEST
runmqsc QM_TEST < C:\QM_TEST_SCRIPT.DUMP > C:\QM_TEST_SCRIPT.OUT
這表示runmqsc命令將對 QM_TEST操作,操作的命令來源于腳本文件 C:\QM_TEST_SCRIPT.DUMP,而執(zhí)行結(jié)果會輸出到 C:\QM_TEST_SCRIPT.OUT
總結(jié)
以上是生活随笔為你收集整理的ibmmq 通道命令_IBM WebSphere MQ 7.5基本用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联想V450笔记本连接手机蓝牙问题
- 下一篇: Django 字段加密存储并支持检索