管理“隊列管理器”
1. Control commands
1)Queue manager commands
每個結點都應改有一個預設隊列管理器
crtmqm -q MQM_NAME
每個隊列管理器都應改有一個死信隊列,以防止資訊不能傳遞時阻塞通道和傳輸隊列。
crtmqm -u dead-letter_queue MQM_NAME
每個隊列管理器都應改有一個傳輸隊列
crtmqm -d 用于指定傳輸隊列,但是并沒有建立,仍需要顯式建立。
建立多個隊列管理器時,要注意記憶體沖突
These shared memory problems do not occur if the different logical volumes
are created such that they have different minor device numbers.
EXAMPLE:
crtmqm -q -d MY.DEFAULT.XMIT.QUEUE -u SYSTEM.DEAD.LETTER.QUEUE SATURN.QUEUE.MANAGER
NOTE: 傳輸隊列沒有真正建立
備份隊列管理器的配置檔案
amqmdain
UNIX下面更改檔案mqs.ini
關閉隊列管理器
endmqm -c MQM_NAME (同 endmqm MQM_NAME)
endmqm -w MQM_NAME (等待所有的應用都停止了,隊列管理器才停止)
endmqm -i MQM_NAME (立即關閉隊列管理器)
endmqm -p MQM_NAME (強制關閉隊列管理器,慎用)
删除隊列管理器
dltmqm MQM_NAME
2)Channel commands
3)Utility commands
2. 使用MQSC
使用 <, > 對輸入輸出重定向
Example:c:>runmqsc < define.mq
1) 定義
DEFINE QLOCAL (ORANGE.LOCAL.QUEUE);
當在一行裡面,指令過長時,
使用(-)表示指令從下一行的開始處連結
使用(+)表示指令從下一行的第一個非空位元組開始
2) 驗證指令,但是不執行。
runmqsc -v < define.mq > myprog.out
3) 如果是遠端隊列管理器,則
runmqsc -w MQM_NAME
4) 列出隊列管理器的屬性
display QMGR
5) 更改隊列管理器屬性
ALTER QMGR DEADQ (ANOTHERDLQ) INHIBTEV (ENABLED)
6) 顯示對象屬性
display queue(ORANGE.LOCAL.QUEUE) +
MAXDEPTH +
MAXMSGL +
CURDEPTH;
7) 拷貝本地隊列
define qlocal (MAGENTA.QUEUE) like (ORANGE.LOCAL.QUEUE)
8) 更改隊列屬性
a) ALTER QLOCAL (ORANGE.LOCAL.QUEUE) MAXMSGL(10000)
b) DEFINE QLOCAL(ORANGE.LOCAL.QUEUE) MAXMSGL(10000) REPLACE
NOTE: b方法重新定義了隊列,這樣隊列的其他屬性就變成預設隊列的屬性了.
9) 清空隊列
CLEAR QLOCAL (MAGENTA.QUEUE)
10) 删除隊列
隻有當隊列中不含未完成送出的資訊時,才能删除. 如果隊列中含有已經完成送出的資訊, 删除時必需添加PURGE參數
DELETE QLOCAL (PINK.QUEUE) PURGE
添加NOPURGE參數,可以防止删除含有資訊的隊列.
12) 定義别名隊列
DEFINE QALIAS (MY.ALIAS.QUEUE) TARGQ (YELLOW.QUEUE)
ALTER QALIAS (MY.ALIAS.QUEUE) TARGQ (MAGENTA.QUEUE) FORCE
NOTE: 使用FORCE是指,即使隊列正在使用中,也能夠改變.
13) 定義模闆隊列
模闆隊列和本地隊列的差別是, 模闆隊列可以指定由其産生的動态隊列的生命期.
DEFINE QMODEL (GREEN.MODEL.QUEUE) DEFTYPE(PERMDYN)
14) 使用服務對象(service object)
a) server服務對象, 一個隊列管理器隻能有一個server服務對象在運作. 使用 display svstatus來監控他的狀态.
b) command服務對象, 可以有多個同時運作, 但是不能監控狀态.
3. 用于觸發器的對象管理
1) 定義用于觸發器的應用隊列
DEFINE QLOCAL(MOTOR.INSURANCE.QUEUE) +
PROCESS(MOTOR.INSURANCE.QUOTE.PROCESS) +
MAXMSGL(2000) +
DEFPSIST(YES) +
INITQ(MOTOR.INS.INIT.QUEUE) +
TRIGGER +
TRIGTYPE(DEPTH) +
TRIGDPTH(2) +
TRIGMPRI(5)
2) 定義初始化隊列
DEFINE QLOCAL(MOTOR.INS.INIT.QUEUE) +
GET(ENABLED) +
NOSHARE +
NOTRIGGER +
MAXMSGL(2000) +
MAXDEPTH(1000)
3) 定義過程
DEFINE PROCESS (MOTOR.INSURANCE.QUOTE.PROCESS) +
DESCR('Insurance request message processing') +
APPLICID('/home/sean/HP_UX/test/mq/2session/mqgeta') +
USERDATA('open, close, 235')