linux下MQ简单配置手册 下载本文

内容发布更新时间 : 2024/5/17 16:44:07星期一 下面是文章的全部内容请认真阅读。

消息发送涉及到的队列及通道示意图:

放进消息远程队列R_B传输队列QT_B发送通道CHL_B发送方A监听进程接收通道CHL_B本地队列Q_B取出消息接收方B

定义发送方为A,接收方为B,下面是建立A向B发送消息的单向配置。

发送方A的配置

1. 在发送方A创建队列管理器QM_A:

[mqm@localhost ~]$ crtmqm -q QM_A 成功后会有如下提示:

There are 90 days left in the trial period for this copy of WebSphere MQ. WebSphere MQ queue manager created.

Creating or replacing default objects for QM_A.

Default objects statistics : 40 created. 0 replaced. 0 failed. Completing setup. 2. 启动QM_A

[mqm@localhost ~]$ strmqm -q QM_A 成功后会有如下提示:

There are 90 days left in the trial period for this copy of WebSphere MQ. WebSphere MQ queue manager 'QM_A' starting.

5 log records accessed on queue manager 'QM_A' during the log replay phase. Log replay for queue manager 'QM_A' complete.

Transaction manager state recovered for queue manager 'QM_A'. WebSphere MQ queue manager 'QM_A' started. 3. 在发送方A创建A的本地队列Q_A:

[mqm@localhost ~]$ runmqsc QM_A //进入QM_A的控制台 成功后会有如下提示:

5724-H72 (C) Copyright IBM Corp. 1994, 2005. ALL RIGHTS RESERVED. Starting MQSC for queue manager QM_A.

然后在空白处开始输入命令(下面创建队列及通道均在控制台中进行): defineql(Q_A)

成功后有如下提示:

AMQ8006: WebSphere MQ queue created.

4. 在发送方A创建用于和B通信的传输队列QT_B:

defineql(QT_B) usage(XMITQ) 成功后有如下提示:

AMQ8006: WebSphere MQ queue created.

5. 在发送方A创建映射接收方B的远程队列R_B:

defineqr(R_B)rqmname(QM_B)rname(Q_B)xmitq(QT_B) Replace

//QM_B是B的队列管理器名;Q_B是B的本地队列名;QT_B是用于和B通信的传输队列名。Replace为覆盖原有配置 成功后有如下提示:

AMQ8006: WebSphere MQ queue created.

6. 在发送方A创建指向接收方B的发送通道CHL_B:

definechl(CHL_B) chltype(SDR) conname('10.10.1.2(1414)') xmitq(QT_B)

// CHL_B由B提供,是B的接收通道名;10.10.1.2和1414是B的ip和监听端口;QT_B是用于和B通信的传输队列名。 成功后有如下提示:

AMQ8014: WebSphere MQ channel created.

至此,由A向B单向发送的队列及通道建立完毕,B需要建立本地队列、传输队列、接收通道、启动监听进程后可以接收消息(上面已进行过的操作略去,命名类似)。

发送方B的配置

7. 在接收方B创建接收通道CHL_B: define channel(CHL_B)chltype(RCVR) 成功后有如下提示:

AMQ8014: WebSphere MQ channel created. 8. 在接收方B启动监听进程:

[mqm@localhost ~]$ runmqlsr -t tcp -p 1414 -m QM_B&

// 为QM_B启动端口为1414的监听 成功后有如下提示: [1] 12341

[mqm@localhost ~]$ 5724-H72 (C) Copyright IBM Corp. 1994, 2005. ALL RIGHTS RESERVED. 可以使用nestat–an,在Active Internet connections (servers and established)的local address中查看到该端口的使用。

至此,发送方A和接收方B的配置工作已完成。

发送测试消息

下面是在发送方A发送测试消息:

9. [mqm@localhost ~]$ runmqchl -c CHL_B -m QM_A& //启动QM_A的发送通道CHL_B

成功后有如下提示:

Channel 'CHL_B' is starting.

进入/opt/mqm/samp/bin,

[mqm@localhost bin]$ ./amqsputR_B QM_A

// R_B是映射接收方B的远程队列,QM_A为A的队列管理器 成功后出现如下提示: Sample AMQSPUT0 start target queue is R_B

这时在下面的空白处输入内容并回车,内容就由A发送至B

下面是接收方B接收测试消息:

[mqm@localhost bin]$ ./amqsgetQ_B QM_B

//Q_B是接收方B的本地队列,QM_B为B的队列管理器

其他配置

1.用windows下的MQ管理器对linux下的MQ进行管理:

DEFINE CHL(SYSTEM.ADMIN.SVRCONN) CHLTYPE(SVRCONN) TRPTYPE(TCP) MCAUSER('mqm')

DEFINE QM(SYSTEM.MQEXPLORER.REPLY.MODEL) DEFTYPE(TEMPDYN) 2.需要建立服务器连接通道提供给应用服务使用: DEFINE CHANNEL(CONNNAME) CHLTYPE(SVRCONN)

3.为传输队列加上触发器,在有消息要发送时触发启动发送通道: alterql(Q_TRANSFER) TRIGDATA('CHL_SEND') TRIGTYPE(FIRST) TRIGGERinitq('SYSTEM.CHANNEL.INITQ')