MQ基礎知識及操作指南_第1頁
MQ基礎知識及操作指南_第2頁
MQ基礎知識及操作指南_第3頁
MQ基礎知識及操作指南_第4頁
MQ基礎知識及操作指南_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、最新資料推薦MQ基礎知識及操作指南一. MQ基本操作MQ中有幾個很重要的組件:隊列管理器(QueueManage)、隊列(Queue和通道(Channel)。其基本的操作方法如下:創(chuàng) 建隊列管理器crtmqm q QMgrName-q是指創(chuàng)建缺省的隊列管理器刪除隊列管理器dltmqm QmgrName啟 動隊列管理器strmqmQmgrName如果是啟動默認的隊列管理器,可以不帶其名字停止隊列管理器endmqm QmgrName受控停止en dmqm i QmgrName立即停止en dmqm p QmgrName強制停止顯示隊列管理器dspmqmQmgrName運行MQSeries命令run

2、mqsc QmgrName如果是默認隊列管理器,可以不帶其名字往隊列中放消息amqsput QNamQmgrName如果隊列是默認隊列管理器中的隊列,可以不帶其隊列管理器的名字從隊列中取出消息amqsget QNamQmgrName如果隊列是默認隊列管理器中的隊列,可以不帶其隊列管理器的名字啟動通道runmqchl c ChlName m QmgrName啟動偵聽runmqlsr t TYPE p PORT m QMgrName停止偵聽en dmqlsr -m QmgrName MQSeries 命令定義死信隊列 DEFINE QLOCAL( QNAM) DEFPSIST (YES REPLA

3、CE設定隊列管理器的死信隊列ALTER QMGR DEADQ (QNAME定義本地隊列DEFINE QL(QNAM) REPLACE定義別名隊列DEFINE QALIAS(QALIASNAMEJARGQ(QNAME)遠程隊列定義DEFINE QREMOTE (QRNAME +RNAME(AAA RQMNAMQMGRNAMIEXMITQ (QTNAME定義模型隊列DEFINE QMODEL (QNAME DEFT YPE( TEMPDYN定義本地傳輸隊列DEFINE QLOCAL(QTNAME) USAGE(XMITQ)DEFPSIST(YES) +INITQ ( SYSTEM.CHANNELN

4、ITQ +PROCESS(PROCESSNAIREPLACE倉U 建進程定義DEFINE PROCESS PRONAME +DESCR( STRING +APPLTYPEWINDOWSNTAPPLICID ( runmqchl -c SDR_TEST-m QM_ TEST其中APPLT YPE的值可以是:CICS、UNIX WINDOWSWINDOWSN等創(chuàng)建發(fā)送方通道DEFINE CHANNELSDRNAME CHLTYPE ( SDR + CONNAME(15(1418) ) XMITQ (QTNAME REPLACE其中CHLT YPE可以是:SDR SVR R

5、CVR RQSTR CLNTCONNSVRCONNCLUSSDR和 CLUSRCVR創(chuàng)建接收方通道DEFINE CHANNELSDRJESTCHLTYPE( RCVR REPLACE倉U建服務器連接通道DEFINE CHANNEL SVRCONNNAMECHLTYP( SVRCONN REPLACE 顯示隊列的所有屬性DISPLAYQUEU(QNAM) ALL顯示隊列的所選屬性DISPLA Y QUEUEQNAMEDESCFGETPUTDISPLAYQUEUE QNAMEMAXDEPTHURDEPTH顯示隊列管理器的所有屬性DISPLA Y QMGR ALL顯示進程定義DISPLAYDROCE

6、SSDRONAMIE更改屬性ALTER QMGRDESCR NEW DESCRIPTION ALTER QLOCAL( QNAME PUT(DISABLEDALTER QALIAS(QNAMJE TARGQ( TARGQNA|E刪除隊列DELETEQLOCAL QNAMEDELETE QREMOTE(QRNAME清除隊列中的所有消息CLEAR QLOCAL(QNAME修改 MQ 的字符集(437, 1381, 891) CCSID:437 =ASCII/GB2312 . CCSID:500 = EBCDIC/IBM935.CCSID:1381二 UNICODE runmqsc 隊列管理器名稱

7、alter qmgr ccsid(437) end二. 配置一個能夠通信的遠程連接以上講述了 MQ的基本命令操作,但只知道這些是沒有實際意義的。MQ的最終目的是實現(xiàn)遠程通信,所以下面就以一個具體的例子 來說明如何實現(xiàn)遠程連接。這個例子的目的是建立可以實現(xiàn)消息傳遞的一對MQ服務器,它們分別基于NT和UNIX平臺。首先在NT端建一隊列管理器crtmqm q QM_NT啟動隊列管理器strmqm QM_NT運行MQ控制臺命令ru nm qsc QM_NT創(chuàng)建死信隊列DEFINEQL(NT.DEADQ) DEFPSIST( YES) REPLACE更改隊列管理器屬5 / 14最新資料推薦性,設置其死信

8、隊列ALTER QMGR DEADQIT.DEADQ倉U建進程定義DEFINE PROCESS ( P_NT + APPLTYPE(WINDOWSNTAPPLICID( runmqchl -c SDR_NTm QM_NT創(chuàng)建 本地傳 輸隊列DEFINE QL(QT_NT) USAGE(XMITQ)DEFPSIST(YES) +INITQ ( SYSTEM.CHANNELNITQ +PROCESS(P_NT) REPLACE倉U建遠程隊列定義,對應于 UNIX機器上的本地隊列 Q_UNIX,傳輸隊列為 QT_NT DEFINEQREMOT(E2R_NT +RNAME (Q_UNIX RQMNAM

9、gQM_UNIX +XMITQ(QT_NT創(chuàng)建發(fā)送方通道,其傳輸隊列為 QT_NT,遠程主機地址為,偵聽端口為1414DEFINECHANNEL( SDR_NTCHLTYPE( SDR) +CONNAME((1414) )XMITQ (QT_NT REPLACE創(chuàng)建服務器連接通道 DEFINE CHANNEL(S_NT CHLT YPE( SVRCONNREPLACE在UNIX端創(chuàng)建隊列管理器crtmqm qQM_UNIX啟 動隊列 管理器strmqm QM_UNIX添加偵聽程序修改/etc/services文件,加入一行:MQSeries 1414/t

10、cp #MQSeries channel listener修 改 /etc/inetd.conf文件,加入一行(啟動偵聽程序)MQSeries stream tcp no waitmqm /usr/lpp/mqm/b in/amqcrstaamqcrsta m QM_UNIX運行以下命令,以使修改起作用refresh s inetd運行MQ控制臺命令更改隊列管理器屬QL(UNIX.DEADQDEFPSIST( YESREPLACE性,設置其死信隊列ALTER QMGR DEADQ(UNIX.DEADQ創(chuàng)建接收方通道,其名字必須與遠程發(fā)送方相同DEFINECHANNELSDR_NT CHLTYP

11、E( RCVR REPLACE倉U建本地隊列 DEFINE QL(Q_UNIX DEFPSIST(YES)REPLACE倉U建服務器連接通道DEFINE CHANNEL( S_UNIX)CHLTYPE(SVRCONNREPLACE經過以上操作之后,遠程連接的配置工作完成。接下來需要驗證配置是否正確。runm qchlc SDR_NTh從NT端發(fā)送消息到 UNIX在UNIX端接收消息在NT端啟動發(fā)送方通道QM_NT或 start chl(SDR_NT)端 amqsput QR_NT QM_NT若能收到消/usr/mqm/samp/bi n/amqsget Q_UNIX QM_UNIX息,說明配置

12、成功。另,在NT下一般情況下在建立隊列管理器時會自動建立偵聽器,啟動隊列管理器時則會自動啟動偵聽程序。當然也可以手動配置偵聽程序。修改 wi nn tsystem32driversetcservices文件,在文件中加入一行:MQSeries 1414/tcp #MQSeries channel listener啟動偵聽程序runm qlsr t tcp p 1414 m QM_NT 上說明了怎樣建立簡單的單向傳輸網絡消息從NT端傳送到UNIX端。建立從UNIX端到NT端的遠程連接和以上相仿,要建立雙向的傳輸網絡也是同樣的道理。三. 配置JNDI用JMS實現(xiàn)消息的發(fā)送和接收時,經常會用到JND

13、I。因為JNDI這種方式比較靈活,對于編程也比較簡單。在安裝了 MQSeries Client for Java之后,在javabin 目錄下找到 JMSAdmin.config 文件。該文件主要用來說明Con text的存儲方式及存儲地址,對應于文件中的兩個參數 INITIAL_CONTEXT_FACTORY PROVIDER_URL 典型的JMSAdmin.config文件內容如下:#INITIAL_CONTEXT_FACTOR Y二com.su n.jn di.ldap.LdapCtxFactoryINITIAL_CONTEXT_FACTOR Y=com.su n.jn di.fsc o

14、n text.RefFSCo ntext Factory#INITIAL_CONTEXT_FACTOR Y二com.ibm.ejs. ns.j ndi.CNI ni tialCo nte xtFactory#PROVIDER_URL=ldap:/polaris/o二ibm,c=usPROVIDER_URL二file:/d:/temp#PROVIDER_URL=iiop:/localhost/#SECURITY_AUTHENTICATIO N二noneINITIAL_CONTEXT_FACTOR表示 JMSAdminTool 使用的服務提供商。當前有三種受支持的值。com.sun.jndi.ld

15、ap.LdapCtxFactory用于 LDAP,如果使用它就必須安裝一個LDAP服務器。com.s un.jn di.fsc on text.RefFSC on textFactory用于文件系統(tǒng)上下文,它只需要使用者提供存放上下文的文 件路徑。com.ibm.ejs.ns.jndi.CNInitialContextFactory是專門為websphere提供的,它需要和 websphere的CosNaming資源庫一起 使用。PROVIDER_UR表示會話初始上下文的 URL,由JMSAdmintool 實現(xiàn)的所有JNDI操作的根。它和 INITIAL_CONTEXT_FACTORY一 對

16、應ldap:/host name/c on text name用于LDAPfile:drive:/path name用 于 文 件 系統(tǒng)上下文iiop:/host name:port/?TargetC on text=ctx用于訪問websphere CosNami ng 名稱空間最后還有一個參數SECURITY_AUTHENTICATION于說明JNDI是否把安全性憑證傳 遞給了您使用的服務供應商。只有當使用了 LDAP服務供應商時,才使用此參數。此參數有三個值,none (匿名認證)、simple (簡單認證)和CRAM-MD認證機制。如果沒有提供有效值,缺省值為 none。確認配置文件之

17、后,可以在 javabi n目錄下啟動JMSAdmi n控制臺。也可以在任何目錄下用下面的命令來啟動控制臺:JMSAdmin cfg MQ_JAVA_INSTALL_PATHjavabi nJMSAdmi n.config其中MQ_JAVA_INSTALL_PATH MQSeries Clie nt for Java安裝的根目錄。若啟動失敗,則好好檢查一下您的環(huán)境變量是否設置正 確。根據我 個人的 經驗,除了把 com.ibm.mq.jar 和 com.ibm.mqjms.jar 加入到環(huán)境變量外,還要把 fscon text.jar和providerutil.jar加入到環(huán)境變量。進入JMS

18、Admin控制臺后,您可以自由定義subcon text。對于子上下文的操作,主要有一下命令:display ctxdefi ne ctx(ctx name)cha nge ctx(ctx name)cha nge ctx(二up)cha ngectx(=i nit) deletectx(ctx name)當然,在這里的主要任務并非是用來定義sub con text ,而是用來定義以下幾個對象:MQQueueConnection FactoryMQTopicCo nn ectio nFactoryMQQueueMQTopic(還有其它的一些對象,女口 MQXAQueueConnectionFa

19、ctory等,不常用到,在此不作說明。)可以使用很多動詞來操縱目錄名稱空間中的受管理對象。ALTER、DEFINE DISPLAY DELETE COPY和 MOVE 它們的用法 都算比較簡單,這里只列舉一二以作說明。例一:定義一 QueueConnectionFactory,連接主機 8 ,端口 1414 DEFINE QCF(EXAMPLEQCF)+ DESC(ExampleQueue Connection Factory)+TRAN(CLIENT)+HOST(8)+QMGR(QM_EXAMPLE)+CHAN(S_EXAMPLE)+PORT(1414

20、)+CCSID(1381)例二:定義一 Queue,其對應于 MQ中的Q_EXAMPLE DEFINE Q(EXAMPLEQL)+DESC(Local queue)+QMGR(QM_EXAMPLE)+QUEUE(Q_EXAMPLE)+CCSID(1381)四.用JMS實現(xiàn)MQ編程上面我們說明了怎樣用JMSAdminTool 定義MQ對象的上下文。我們的最終目的是要用JMS來實現(xiàn)MQ編程,以實現(xiàn)在程序中對 MQ隊列進行收、發(fā)消息。所以,下面我們將重點討論一下 MQ的JMS實現(xiàn)。如果您對JMS編程很熟悉,那么您也就會用JMS來實 現(xiàn)MQ編程,因為用JMS來編寫MQ程序與編寫一般的JMS程序沒 有太

21、大的差別。舉個例子,當我們想發(fā)送一條消息到 MQ的隊列中,再從該隊列 中取回消息時,我們編程時主要有四個步驟。首先我們要初始化在程序中要用到的對象,然后才可以發(fā)送消息 到隊列中去,再就是收取消息了,最后要清除那些永久對象。這些都和普通的JMS程序相當。程序的源代碼如下:importimport java.util.Hashtable;javax.jms.*;import javax .namin g.*;importjavax .namin g.directory.*;public class sampleprotectedQueueC onn ecti on Factoryfactory=n

22、 ull;15 / 14protectedprotected TextMessageprotectedQueueConnection connection;QueueSession queueSession;outMessage;protected QueueSe nder queueSe nder;protected QueueReceiver queueReceiver; public staticfinal String qcfLookup二EXAMPLEQCF;public static finalStri ng qLookup=EXAMPLEQL; public static fin

23、al Stri ngicfcom.s un.jn di.fsc on text.RefFSC on textFactory;public String url二file:/d:/temp;public voidsample In it() throws Excepti on Hashtable en vir onmentnewHashtable();en viro nmen t.put(Co ntextNITIAL_CONTEXT_FACTOR Y,icf);en viro nmen t.put(Co ntext.PROVIDER_URL,url);en viro nmen t.put(Co

24、ntext.REFERRAL,throw);Con textctx二new InitialDirContext(environment);factory(QueueC onn ectio nFactory)ctx .lo okup(qcfLookup);Queueq1= null;q1=(Queue)ctxo okup(qLookup);conn ecti onfactory.createQueueC onn ectio n();queueSessi onconn ectio n.createQueueSessi on (false,Sessio n.AUTO_ACKNOWLEDGE);que

25、ueSenderqueueSessi on .createSe nder(q1);queueSe nder.setDeliveryMode(DeliveryMode.NON_PERSISTENT);outMessagequeueSessi on. createTextMessage();queueReceiverqueueSessi on .createReceiver(q1);conn ecti on. start();public voidsen dMessageOut(Stri ngmessage) throws JMSExceptio noutMessage.setText(messa

26、ge);queueSe nder.se nd(outMessage); public String 最新資料推薦returnreceiveMessage() throws Excepti on(TextMessage)queueReceiver.receive().getText();public voidsampleClose() throwsJMSException17 / 14queueSessi on .close();conn ecti on. close();public static voidmain( Stri ng args)String rec; sample sp =ne

27、w sample();try sp.sample In it();World!);sp.se ndMessageOut(Hello javaan g.Thread.sleep(4000);rec=sp.receiveMessage();System.out.pri ntl n(Receivetextis:+rec);sp.sampleClose();catch(Excepti one)e.pr in tStackTrace();五.遠程管理MQ在WINDOW平臺下具有圖形化管理界面,但在UNIX平臺下卻只能通過命令行來進行操作。這樣就給使用者帶來很大的不便。我們都希望能通過圖形界面來進行管理配置。 為了實現(xiàn)我們的想法,我們就必須建立遠程管理。實現(xiàn)遠程管理有以下幾個步驟:1 .被管理

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論