WebsphereMQ

# crtmqm daisy.queue.manager
WebSphere MQ queue manager created.
Creating or replacing default objects for daisy.queue.manager.
Default objects statistics : 31 created. 0 replaced. 0 failed.
Completing setup.
Setup completed.

この例では daisy.queue.manager という名前のキューマネージャを作る。 コマンド実行後、ディレクトリ /var/mqm/qmgrs 以下に指定した名前のキューマネージャディレクトリが作られる。

オプション -q を指定するとデフォルトキューマネージャを作る。

# crtmqm -q daisy.queue.manager

キューマネージャを削除する

# dltmqm daisy.queue.manager
WebSphere MQ queue manager 'daisy.queue.manager' deleted.

キューマネージャを起動する

# strmqm daisy.queue.manager
WebSphere MQ queue manager 'daisy.queue.manager' started.

キューマネージャ名を省略した場合はデフォルトキューマネージャを指定したことになる。 再起動も同じコマンドをタイプする。

キューマネージャを止める

# endmqm daisy.queue.manager
Quiesce request accepted. The queue manager will stop when all outstanding work is complete.

止まったかどうかの確認には ps -ef | grep mq を使うと良い。

キューマネージャの一覧

# dspmq
QMNAME(daisy.queue.manager)                              STATUS(Running)

MQSC

MQSCセッションを開始する

# runmqsc daisy.queue.manager
5724-B41 (C) Copyright IBM Corp. 1994, 2002.  ALL RIGHTS RESERVED.
Starting MQSC for queue manager daisy.queue.manager.

キューマネージャ名を省略した場合はデフォルトキューマネージャを指定したことになる。

MQSCセッションを終了する

# MQSC
end
     2 : end
One MQSC command read.
No commands have a syntax error.
All valid MQSC commands were processed.

キューマネージャの情報を見る

# MQSC
display qmgr
     1 : display qmgr
AMQ8408: Display Queue Manager details.
   DESCR( )                                DEADQ( )
   DEFXMITQ( )                             CHADEXIT( )
   CLWLEXIT( )                             CLWLDATA( )
   REPOS( )                                REPOSNL( )
   SSLKEYR(/var/mqm/qmgrs/daisy!queue!manager/ssl/key)
   SSLCRLNL( )                             SSLCRYP( )
   COMMANDQ(SYSTEM.ADMIN.COMMAND.QUEUE)    QMNAME(daisy.queue.manager)
   CRDATE(2003-10-11)                      CRTIME(22.24.47)
   ALTDATE(2003-10-11)                     ALTTIME(22.24.47)
   QMID(daisy.queue.manager_2003-10-11_22.24.47)
   TRIGINT(999999999)                      MAXHANDS(256)
   MAXUMSGS(10000)                         AUTHOREV(DISABLED)
   INHIBTEV(DISABLED)                      LOCALEV(DISABLED)
   REMOTEEV(DISABLED)                      PERFMEV(DISABLED)
   STRSTPEV(ENABLED)                       CHAD(DISABLED)
   CHADEV(DISABLED)                        CLWLLEN(100)
   MAXMSGL(4194304)                        CCSID(5050)
   MAXPRTY(9)                              CMDLEVEL(530)
   PLATFORM(UNIX)                          SYNCPT
   DISTL(YES)

ローカルキューを作成

# MQSC
define qlocal (flower.local.queue)
     4 : define qlocal (flower.local.queue)
AMQ8006: WebSphere MQ queue created.

この例では flower.local.queue という名前のローカルキューを作る

キューの情報を参照する

# MQSC
display queue (flower.local.queue)
     8 : display queue (flower.local.queue)
AMQ8409: Display Queue details.
   DESCR(WebSphere MQ Default Local Queue)
   PROCESS( )                              BOQNAME( )
   INITQ( )                                TRIGDATA( )
   CLUSTER( )                              CLUSNL( )
   QUEUE(FLOWER.LOCAL.QUEUE)               CRDATE(2003-10-11)
   CRTIME(22.37.13)                        ALTDATE(2003-10-11)
   ALTTIME(22.37.13)                       GET(ENABLED)
   PUT(ENABLED)                            DEFPRTY(0)
   DEFPSIST(NO)                            MAXDEPTH(5000)
   MAXMSGL(4194304)                        BOTHRESH(0)
   SHARE                                   DEFSOPT(SHARED)
   HARDENBO                                MSGDLVSQ(PRIORITY)
   RETINTVL(999999999)                     USAGE(NORMAL)
   NOTRIGGER                               TRIGTYPE(FIRST)
   TRIGDPTH(1)                             TRIGMPRI(0)
   QDEPTHHI(80)                            QDEPTHLO(20)
   QDPMAXEV(ENABLED)                       QDPHIEV(DISABLED)
   QDPLOEV(DISABLED)                       QSVCINT(999999999)
   QSVCIEV(NONE)                           DISTL(NO)
   DEFTYPE(PREDEFINED)                     TYPE(QLOCAL)
   SCOPE(QMGR)                             DEFBIND(OPEN)
   IPPROCS(0)                              OPPROCS(0)
   CURDEPTH(0)

キューを削除する

# MQSC
delete qlocal (flower.local.queue) nopurge
     1 : delete qlocal (flower.local.queue) nopurge
AMQ8007: WebSphere MQ queue deleted.

コミットされていないメッセージがある場合は削除されない。 nopurge のかわりに purge を指定すると強制的に削除する。

サーバコネクションチャンネルを定義する

# MQSC
define channel (channel1) chltype(svrconn) trptype(tcp) mcauser('mqm')
     1 : define channel (channel1) chltype(svrconn) trptype(tcp) mcauser('mqm')
AMQ8014: WebSphere MQ channel created.

Websphere MQ リスナを起動する

# runmqlsr -m daisy.queue.manager -t tcp &
[1] 4172
5724-B41 (C) Copyright IBM Corp. 1994, 2002.  ALL RIGHTS RESERVED.

オプション -p でポートを指定できる。デフォルトは1414

Websphere MQ リスナを止める

#endmqlsr -m daisy.queue.manager
A WebSphere MQ listener will end shortly.
[1]+  Exit 4                  runmqlsr -t tcp

環境変数 MQSERVER の定義

MQ のクライアント側は環境変数 MQSERVER からサーバの場所を知る。

export MQSERVER=CHANNEL1/TCP/'localhost'

ポートを指定する場合は 'localhost(1414)' とする。デフォルトは1414

この環境変数が指定されていないとキューマネージャに接続しようとしても MQRC_Q_MGR_NAME_ERROR (2058) がでる。

セキュリティ

キューマネージャに対する権限を参照する

以下の例では daisy.queue.manager に対する mqm グループの権限を表示する。

# dspmqaut -m daisy.queue.manager -t qmgr -g mqm
Entity mqm has the following authorizations for object daisy.queue.manager:
        inq
        set
        connect
        altusr
        crt
        dlt
        chg
        dsp
        setid
        setall

キューに対する権限を表示する

以下の例では daisy.queue.manager の FLOWER.LOCAL.QUEUE に対する mqm グループの権限を表示する。

# dspmqaut -m daisy.queue.manager -n FLOWER.LOCAL.QUEUE -t queue -g mqm
Entity mqm has the following authorizations for object FLOWER.LOCAL.QUEUE:
        get
        browse
        put
        inq
        set
        crt
        dlt
        chg
        dsp
        passid
        passall
        setid
        setall
        clr

キューマネージャに対する権限を変更する

# setmqaut  -m daisy.queue.manager -t qmgr -p smith +all
The setmqaut command completed successfully.

ユーザ smith に対して daisy.queue.manager へのすべての権限を与える。

キューに対する権限を変更する

# setmqaut  -m daisy.queue.manager -n FLOWER.LOCAL.QUEUE -t queue -p smith +all
The setmqaut command completed successfully.

ユーザ smith に対して daisy.queue.manager の FLOWER.LOCAL.QUEUE へのすべての権限を与える。

TclからCOM(ActiveX)経由でMQを使う

現在TclとMQの直接のバインディングは提供されていません。 しかしWindows環境であればCOMを経由することによってTclからMQを使うことができます。 TclでCOMを使うにはtCOMを使用します。

# mqput.tcl
package require tcom
 
set qmname [lindex $argv 0]
set toqname [lindex $argv 1]
 
set mq [::tcom::ref createobject "MQAX200.MQSession"]
set qm [$mq AccessQueueManager $qmname]
 
set msg [$mq AccessMessage]
$msg writeString "howdy"
 
set toq [$qm AccessQueue $toqname 17]
$toq Put $msg

キューマネージャ接続のエラーで疑うべきこと

関連リンク


JapaneseTclWiki
powered by TickleWiki