TXSeries入門系列文章13

本節中將創建一個region,編譯兩個程序,並為這兩個程序添加PDTD,為region添加XAD來連接MQ伺服器,添加TDD記錄消息傳遞的日誌。僅使用之前提及的一些簡單命令。

1)創建用於測試的region

例如:

cicscp -v create region MQ

2)複製示例代碼到regionbin目錄下

cp /opt/ibm/cics/examples/RM_support/WMQ/* /var/cics_regions/MQ/bin/

3)程序編譯

現在將編譯cics_mqput(向隊列中放入消息)、cics_mqget(從隊列中獲取消息)和switch load fileswitch load file是一個共享庫,被WebSphere MQ應用程序和隊列管理器裝載。它的目的是簡化資料庫客戶端共享庫的裝載,並返回指向XA函數的指針。

首先,用戶根據自己的環境修改makefile cics_mq_sample.mk“。

MQM_LDLIBS=-L/opt/mqm/lib/libmqm.so

MQM_SWITCHLOAD_LDLIBS=-lmqmcics -lmqmxa -lmqz -lmqmcs –lmqmzse

然後修改編譯switch load filecc命令 

cc -m32 -u appc_c_version -fPIC -shared $(MQM_ROOT)/samp/amqzscix.c -I/usr/include $(CICS_CCFLAGS) $(MQM_CCFLAGS) -o amqzscix $(CICS_ROOT)

/lib/regxa_swxa.o $(MQM_LDFLAGS) $(CICS_LDFLAGS) -lc -lnsl -ldl $(MQM_SWITCHLOAD_LDLIBS)

最後輸入下列命令來編譯cics_mqputcics_mqgetswitch load file

make -f cics_mq_sample.mk

除了自己編譯switch load file外,用戶還可以使用MQ提供的”/opt/mqm/lib/amqczsc“。

參閱:

關於switch load file

 

4)向region中添加PD

例如:

cicsadd -c pd -r MQ MQPUT PathName=cics_mqput

cicsadd -c pd -r MQ MQGET PathName=cics_mqget

5)向region中添加TD

例如:

cicsadd -c td -r MQ MPUT ProgName=MQPUT

cicsadd -c td -r MQ MGET ProgName=MQGET

6)向region中添加XAD

XAD中保存著TXSeries到關係型資料庫或MQ等交易型產品所需的連接信息。這些產品包括遵循XA協議的資料庫DB2Oracle,和本部分的消息隊列中間件MQ

語法

cicsadd -c xad -r <region name> MQXA XAOpen=

“channel=SYSTEM.DEF.SVRCONN,trptype=tcp,conname=<ip address of server>

(<listener port>),qmname=<queue manager name>” SwitchLoadFile=<switch load file path>

選項

<listner port>                          3節步驟9使用的埠號。

<queue manager name>        3節步驟1創建的隊列管理器。

<switch load file path>           switch load file的路徑和名稱,若只給出名稱,則會使用regionbin目錄作為默認路徑。

XAOpen是指XAOpen字元串或者資源管理器初始化字元串。這個字元串會被傳遞給switch load file中遵循XA協議的xa_open方法,字元串內容基於特定XA產品而不同。上面提到的XAOpen字元串只用於配置TXSeriesMQ的通信。

例如:

cicsadd -c xad -r MQ MQXA XAOpen=”channel=SYSTEM.DEF.SVRCONN,

trptype=tcp,conname=9.119.154.229(54321),qmname=QUE1″ SwitchLoadFile=amqzscix

參閱:

關於XAD

 

7)添加MQD

3節步驟3提到,MGET可以被自動觸發從而在初始隊列中檢索消息。為了使用這個功能,還需要添加MQD(監控隊列定義)來實現CKTICKTI是一個持續運行的觸發器監控程序, 監控被INITQ指定的初始化隊列。當一個觸發消息到達初始化隊列時,CKTI將檢索消息並啟動PROCESS指定的關聯應用。所以當MPUT執行時MGET會被觸發。

語法

cicsadd -c mqd -r <region name> <MQD entry name> MQMgrName=<queue manager name>

MQInitiationQueName=<initiation queue name> MonitorTrigger=yes AutoStart=yes

例如:

cicsadd -c mqd -r MQ QM MQMgrName=QUE1 MQInitiationQueName=

CICS.TRIG.QUEUE MonitorTrigger=yes AutoStart=yes

參閱:

添加一個extrapartition TDQ用來記錄放入隊列中和從隊列中獲取的消息的日誌。在程序中執行EXEC CICS WRITEQ TD命令時,所有的日誌消息將被寫入到指定的文件中。

例如:

cicsadd -c tdd -r MQ MQLG RSLKey=public DestType=extrapartition ExtrapartitionFile=MQSAMP.LOG RecordType=line_oriented

例子中所展示的日誌文件將位於”/var/cics_regions/MQ/data/“目錄下,名稱是”MQSAMP.LOG“。

9)修改region的環境變數

cics_mqputcics_mqget程序將使用要添加的環境變數,用來獲取正確的隊列管理器名稱、隊列名稱和連接類型。如果將這些變數放入region的環境變數文件(region bin目錄下的environment),則它們僅在指定region中生效。

例如:

vi /var/cics_regions/MQ/environment

向文件中添加以下環境變數:

CICS_MQ_QMGR_NAME=QUE1

CICS_MQ_INIT_QUEUE=CICS.TRIG.QUEUE

CICS_MQ_QUEUE_NAME=CICS.LOCAL.QUEUE

ENV_MQ_SAMPLE_TYPE=XA

現在所有的客戶端機器配置已經完成。

5. 測試連接和應用程序

1)冷啟動region

例如:

cicscp -v start region MQ StartType=cold

如果使用XA方式連接MQ成功,regionconsole.nnnnnnnnnnnn為具體數字)文件里將看到下列信息:

ERZ080088I/0801 11/12/14 04:01:59.903859000 MQ 18487/0001 : XA OPEN submitted for Server 104 connected to ‘MQSeries_XA_RMI’ using XA_OPEN string

‘channel=CHAN1,trptype=tcp,conname=9.119.154.229(54321),qmname=QUE1’

ERZ080006I/0801 11/12/14 04:01:59.956353000 MQ 18487/0001 : XA_OPEN succeeded:

Application Server 104 connected to ‘MQSeries_XA_RMI’ using XA_OPEN string

‘channel=CHAN1,trptype=tcp,conname=9.119.154.229(54321),qmname=QUE1’

ERZ080089I/0801 11/12/14 04:01:59.956455000 MQ 18487/0001 : XA OPEN completed for Server 104 connected to ‘MQSeries_XA_RMI’ using XA_OPEN string

‘channel=CHAN1,trptype=tcp,conname=9.119.154.229(54321),qmname=QUE1’

隊列伺服器的文件”/var/mqm/qmgrs/<queue manager name>/errors/AMQERR**.LOG“中沒有錯誤消息。

2)測試交易

Linux平台上,例如:

cicslterm -r MQ

Enter the transaction id:MPUT

Enter the transaction id:MGET

AIX平台上,例如:

cicslterm -r MQ

Enter the transaction id:MPUT

查看”/var/cics_regions/MQ/data/MQSAMP.LOG“文件中的內容。

如果一切正確,將會看到下列日誌:

Starting MQPUT Sample Transaction

Connecting to Queue Manager …

Connected to queue manager successfully.

Opening Queue …

Opened queue successfully.

Putting a message to queue …

Message was put successfully.

Closing the queue …

Closed queue successfully.

Starting MQGET Sample Transaction …

Connecting to Queue Manager …

Connected to queue manager successfully.

Opening Queue …

Opened queue successfully.

Getting a message from queue …

Received message(s):

Message: <Sample message put by MPUT transaction>

Closing the queue …

以下文章點擊率最高

Loading…

     

如果這文章對你有幫助,請掃左上角微信支付-支付寶,給於打賞,以助博客運營