Websphere mq 的基本操作__Web

來源:互聯網
上載者:User
  Websphere mq 的基本操作 一. MQ 基本操作

MQ 中有幾個很重要的組件:隊列管理器( QueueManager )、隊列( Queue )和通道( Channel )。其基本的操作方法如下:

建立隊列管理器
crtmqm –q QMgrName
-q 是指建立預設的隊列管理器

刪除隊列管理器
dltmqm QmgrName

啟動隊列管理器
strmqm QmgrName
如果是啟動預設的隊列管理器,可以不帶其名字

停止隊列管理器
endmqm QmgrName 受控停止

endmqm –i QmgrName 立即停止

endmqm –p QmgrName 強制停止

顯示隊列管理器
dspmq –m QmgrName

運行 MQSeries 命令
runmqsc QmgrName
如果是預設隊列管理器,可以不帶其名字

往隊列中放訊息
amqsput QName QmgrName
如果隊列是預設隊列管理器中的隊列,可以不帶其隊列管理器的名字

從隊列中取出訊息
amqsget QName QmgrName
如果隊列是預設隊列管理器中的隊列,可以不帶其隊列管理器的名字

啟動通道
runmqchl –c ChlName –m QmgrName

啟動偵聽
runmqlsr –t TYPE –p PORT –m QMgrName

停止偵聽
endmqlsr -m QmgrName

MQSeries 命令

定義無效信件佇列
DEFINE QLOCAL ( QNAME ) DEFPSIST ( YES ) REPLACE

設定隊列管理器的無效信件佇列
ALTER QMGR DEADQ ( QNAME )

定義本地隊列
DEFINE QL ( QNAME ) REPLACE

定義別名隊列
DEFINE QALIAS(QALIASNAME) TARGQ(QNAME)

遠程隊列定義
DEFINE QREMOTE ( QRNAME ) +
RNAME ( AAA ) RQMNAME ( QMGRNAME ) +
XMITQ ( QTNAME )

定義模型隊列
DEFINE QMODEL ( QNAME ) DEFTYPE ( TEMPDYN )

定義本地傳輸隊列
DEFINE QLOCAL(QTNAME) USAGE(XMITQ) DEFPSIST(YES) +
INITQ ( SYSTEM.CHANNEL.INITQ ) +
PROCESS(PROCESSNAME) REPLACE

建立進程定義
DEFINE PROCESS ( PRONAME ) +
DESCR ( ‘STRING’ ) +
APPLTYPE ( WINDOWSNT ) +
APPLICID ( ’ runmqchl -c SDR_TEST -m QM_ TEST’ )
其中 APPLTYPE 的值可以是: CICS 、 UNIX 、 WINDOWS 、 WINDOWSNT 等

建立發送方通道
DEFINE CHANNEL ( SDRNAME ) CHLTYPE ( SDR ) +
CONNAME ( ‘100.100.100.215(1418)’ ) XMITQ ( QTNAME ) REPLACE
其中 CHLTYPE 可以是: SDR 、 SVR 、 RCVR 、 RQSTR 、 CLNTCONN 、 SVRCONN 、 CLUSSDR 和 CLUSRCVR 。

建立接收方通道
DEFINE CHANNEL ( SDR_ TEST ) CHLTYPE ( RCVR ) REPLACE

建立伺服器串連通道
DEFINE CHANNEL ( SVRCONNNAME ) CHLTYPE ( SVRCONN ) REPLACE

顯示隊列的所有屬性
DISPLAY QUEUE ( QNAME ) [ALL]

顯示隊列的所選屬性
DISPLAY QUEUE ( QNAME ) DESCR GET PUT
DISPLAY QUEUE ( QNAME ) MAXDEPTH CURDEPTH

顯示隊列管理器的所有屬性
DISPLAY QMGR [ALL]

顯示進程定義
DISPLAY PROCESS ( PRONAME )

更改屬性
ALTER QMGR DESCR ( ‘NEW DESCRIPTION’ )
ALTER QLOCAL ( QNAME ) PUT ( DISABLED )
ALTER QALIAS ( QNAME ) TARGQ ( TARGQNAME )

刪除隊列
DELETE QLOCAL ( QNAME )
DELETE QREMOTE ( QRNAME )

清除隊列中的所有訊息
CLEAR QLOCAL ( QNAME )



二.配置一個能夠通訊的遠端連線
以上講述了 MQ 的基本命令操作,但只知道這些是沒有實際意義的。 MQ 的最終目的是實現遠程通訊,所以下面就以一個具體的例子來說明如何?遠端連線。這個例子的目的是建立可以實現訊息傳遞的一對 MQ 伺服器,它們分別基於 NT 和 UNIX 平台。
首先在 NT 端建一隊列管理器
crtmqm –q QM_NT
啟動隊列管理器
strmqm QM_NT
運行 MQ 控制台命令
runmqsc QM_NT
建立無效信件佇列
DEFINE QL(NT.DEADQ) DEFPSIST(YES) REPLACE
更改隊列管理器屬性,設定其無效信件佇列
ALTER QMGR DEADQ ( NT.DEADQ )
建立進程定義
DEFINE PROCESS ( P_NT ) +
APPLTYPE ( WINDOWSNT ) +
APPLICID ( ’ runmqchl -c SDR_NT -m QM_NT’ )
建立本地傳輸隊列
DEFINE QL(QT_NT) USAGE(XMITQ) DEFPSIST(YES) +
INITQ ( SYSTEM.CHANNEL.INITQ ) +
PROCESS(P_NT) REPLACE
建立遠程隊列定義,對應於 UNIX 機器上的本地隊列 Q_UNIX ,傳輸隊列為 QT_NT
DEFINE QREMOTE ( QR_NT ) +
RNAME ( Q_UNIX ) RQMNAME ( QM_UNIX ) +
XMITQ ( QT_NT )
建立發送方通道,其傳輸隊列為 QT_NT ,遠程主機地址為 10.10.10 .2 ,偵聽連接埠為 1414
DEFINE CHANNEL ( SDR_NT ) CHLTYPE ( SDR ) +
CONNAME ( ‘10.10.10.2(1414)’ ) XMITQ ( QT_NT ) REPLACE
建立伺服器串連通道
DEFINE CHANNEL ( S_NT ) CHLTYPE ( SVRCONN ) REPLACE

在 UNIX 端建立隊列管理器
crtmqm –q QM_UNIX
啟動隊列管理器
strmqm QM_UNIX
添加偵聽程式
修改 /etc/services 檔案,加入一行:
MQSeries 1414/tcp #MQSeries channel listener
修改 /etc/inetd.conf 檔案,加入一行(啟動偵聽程式)
MQSeries stream tcp nowait mqm /usr/lpp/mqm/bin/amqcrsta amqcrsta –m QM_UNIX
運行以下命令,以使修改起作用
refresh –s inetd

運行 MQ 控制台命令
runmqsc QM_UNIX
建立無效信件佇列
DEFINE QL(UNIX.DEADQ) DEFPSIST(YES) REPLACE
更改隊列管理器屬性,設定其無效信件佇列
ALTER QMGR DEADQ ( UNIX.DEADQ )
建立接收方通道,其名字必須與遠程發送方相同
DEFINE CHANNEL ( SDR_NT ) CHLTYPE ( RCVR ) REPLACE
建立本地隊列
DEFINE QL ( Q_UNIX ) DEFPSIST(YES) REPLACE
建立伺服器串連通道
DEFINE CHANNEL ( S_UNIX ) CHLTYPE ( SVRCONN ) REPLACE

經過以上操作之後,遠端連線的配置工作完成。接下來需要驗證配置是否正確。
在 NT 端啟動發送方通道
runmqchl –c SDR_NT –m QM_NT 或 start chl(SDR_NT)
從 NT 端發送訊息到 UNIX 端
amqsput QR_NT QM_NT
在 UNIX 端接收訊息
/usr/mqm/samp/bin/amqsget Q_UNIX QM_UNIX

若能收到訊息,說明配置成功。

另,在 NT 下一般情況下在建立隊列管理器時會自動建立接聽程式,啟動隊列管理器時則會自動啟動偵聽程式。當然也可以手動設定偵聽程式。
修改 /winnt/system32/drivers/etc/services 檔案,在檔案中加入一行:
MQSeries 1414/tcp #MQSeries channel listener
啟動偵聽程式
runmqlsr –t tcp –p 1414 –m QM_NT

以上說明了怎樣建立簡單的單向傳輸網路。訊息從 NT 端傳送到 UNIX 端。建立從 UNIX 端到 NT 端的遠端連線和以上相仿,要建立雙向的傳輸網路也是同樣的道理。

三.配置 JNDI
用 JMS 實現訊息的發送和接收時,經常會用到 JNDI 。因為 JNDI 這種方式比較靈活,對於編程也比較簡單。
在安裝了 MQSeries Client for Java 之後,在 /java/bin 目錄下找到 JMSAdmin.config 檔案。該檔案主要用來說明 Context 的儲存方式及儲存地址,對應於檔案中的兩個參數 INITIAL_CONTEXT_FACTORY 和 PROVIDER_URL 。典型的 JMSAdmin.config 檔案內容如下:

#INITIAL_CONTEXT_FACTORY=com.sun.jndi.ldap.LdapCtxFactory
INITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFactory
#INITIAL_CONTEXT_FACTORY=com.ibm.ejs.ns.jndi.CNInitialContextFactory
#
#PROVIDER_URL=ldap://polaris/o=ibm,c=us
PROVIDER_URL=file:/d:/temp
#PROVIDER_URL=iiop://localhost/
#
SECURITY_AUTHENTICATION=none

INITIAL_CONTEXT_FACTORY 表示 JMSAdmin Tool 使用的服務提供者。當前有三種受支援的值。 com.sun.jndi.ldap.LdapCtxFactory 用於 LDAP ,如果使用它就必須安裝一個 LDAP 伺服器。 com.sun.jndi.fscontext.RefFSContextFactory 用於檔案系統上下文,它只需要使用者提供存放內容相關的檔案路徑。 com.ibm.ejs.ns.jndi.CNInitialContextFactory 是專門為 websphere 提供的,它需要和 websphere 的 CosNaming 資產庫一起使用。
PROVIDER_URL 表示會話初始內容相關的 URL ,由 JMSAdmin tool 實現的所有 JNDI 操作的根。它和 INITIAL_CONTEXT_FACTORY 一一對應。

ldap://hostname/contextname 用於 LDAP
file:[drive:]/pathname 用於檔案系統上下文
iiop://hostname[:port]/[?TargetContext=ctx] 用於訪問 websphere CosNaming 名稱空間

最後還有一個參數 SECURITY_AUTHENTICATION ,用於說明 JNDI 是否把安全性憑證傳遞給了您使用的服務供應商。只有當使用了 LDAP 服務供應商時,才使用此參數。此參數有三個值, none (匿名認證)、 simple (簡單認證)和 CRAM-MD5 認證機制。如果沒有提供有效值,預設值為 none 。

確認設定檔之後,可以在 /java/bin 目錄下啟動 JMSAdmin 控制台。也可以在任何目錄下用下面的命令來啟動控制台:
JMSAdmin –cfg MQ_JAVA_INSTALL_PATH/java/bin/JMSAdmin.config
其中 MQ_JAVA_INSTALL_PATH 為 MQSeries Client for Java 安裝的根目錄。
若啟動失敗,則好好檢查一下您的環境變數是否設定正確。根據我個人的經驗,除了把 com.ibm.mq.jar 和 com.ibm.mqjms.jar 加入到環境變數外,還要把 fscontext.jar 和 providerutil.jar 加入到環境變數。
進入 JMSAdmin 控制台後,您可以自由定義 sub context 。對於子內容相關的操作,主要有一下命令:
display ctx
define ctx(ctxname)
change ctx(ctxname)
change ctx(=up)
change ctx(=init)
delete ctx(ctxname)

當然,在這裡的主要任務並非是用來定義 sub context ,而是用來定義以下幾個對象:
MQQueueConnectionFactory
MQTopicConnectionFactory
MQQueue
MQTopic
(還有其它的一些對象,如 MQXAQueueConnectionFactory 等,不常用到,在此不作說明。)
可以使用很多動詞來操縱目錄名稱空間中的受管理對象。 ALTER 、 DEFINE 、 DISPLAY 、 DELETE 、 COPY 和 MOVE ,它們的用法都算比較簡單,這裡只列舉一二以作說明。
例一:定義一 QueueConnectionFactory ,串連主機 10.10.10.18 ,連接埠 1414
DEFINE QCF(EXAMPLEQCF)+
DESC(Example Queue Connection Factory)+
TRAN(CLIENT)+
HOST(10.10.10.18)+
QMGR(QM_EXAMPLE)+
CHAN(S_EXAMPLE)+
PORT(1414)+
CCSID(1381)

例二:定義一 Queue ,其對應於 MQ 中的 Q_EXAMPLE
DEFINE Q(EXAMPLEQL)+
DESC(Local queue)+
QMGR(QM_EXAMPLE)+
QUEUE(Q_EXAMPLE)+
CCSID(1381)

四.用 JMS 實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.