本安装文档的实测安装环境为较老的Red HatEnterprise Linux 5.5 64位版操作系统,使用的MQ版本为WebSphere MQ7.1Linux试用版,正式版或其他版本的安装步骤可能略有不同,请根据具体情况调整。MQ安装文件名及下载地址为:WMQ_7.1.0.3_TRIAL_LNX_X86_64_ML.tar.gz。
安装步骤:
1. 将安装文件解压到当前目录(使用光盘安装则跳过此步骤):
tar -xzvfWMQ_7.1.0.3_TRIAL_LNX_X86_64_ML.tar.gz
2. 运行许可证程序:
./mqlicense.sh
3. 根据提示,输入数字1接受协议。
4. 安装 WebSphere MQ for Linux 服务器,即分别安装Runtime、SDK 和 Server 软件包:
rpm -ivhMQSeriesRuntime-7.1.0-3.x86_64.rpmrpm -ivh MQSeriesSDK-7.1.0-3.x86_64.rpmrpm -ivh MQSeriesServer-7.1.0-3.x86_64.rpm
没有必要一次性安装太多组件,如果仅仅是作为服务器使用,安装下面的三个包就足够了。其它的MQ组件可以按需安装,MQ发行包中包含的主要组件的明细请参见附录。
5. 之后出现提示要验证系统配置是否符合要求,提示的信息及验证结果类似下图:
6. 为稳妥起见,我们应将所有标为“FAIL”的检测项调整到“PASS”;例如,针对上图所示的不合格项,我们可以修改 /etc/sysctl.conf文件,添加或修改其中的一些值:
kernel.sem = 500256000 250 1024fs.file-max = 524288net.ipv4.tcp_keepalive_time= 300
要立即使这些 sysctl 值生效,输入命令 sysctl–p即可。
然后打开/etc/security/limits.conf文件,添加或修改如下配置,设置mqm用户的最大文件打开数限制:
mqm hard nofile 10240mqm soft nofile 10240
7. 修改完毕之后,重新运行su mqm -c "/opt/mqm/bin/mqconfig"确认我们的修改已经生效,然后就可以进行下一步了;否则重新修改。
8. 为了便于后面验证安装是否成功,我们需要安装 WebSphere MQ 样本程序(其中包括 amqsput、amqsget、amqsgbr 和 amqsbcg 等):
rpm -ivhMQSeriesSamples-7.1.0-3.x86_64.rpm
这个命令把 WebSphere MQ 样本程序安装在/opt/mqm/samp/bin 中。它还将在 /opt/mqm/samp 中安装这些样本程序的 C 和 CPP 源文件。我们可以打开这些样本程序的一些源文件(如 amqsput.c ),以了解如何使用 MQ API(MQI)。
9. 安装过程创建了一个名为 mqm 的用户和一个同样名为 mqm 的组。此时,新用户是被锁定的,必须设置一个密码来解锁。设置密码用 passwd 命令:
passwd mqm
系统提示输入用于 mqm 的新密码并随后确认它。我们也可以用一个现有的用户来管理 WebSphere MQ,需要做的是将该用户添加到 mqm 组,例如下列命令将root用户加入mqm组:
usermod -a -g mqm root
10. 之后为了使用方便,我们可以将MQ相关的命令加入到系统环境变量中去,方法是修改/etc/profile文件,在最后加上:
PATH=$PATH:/opt/mqm/samp/bin:/opt/mqm/bin:bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin
然后重启终端或者运行如下命令,即可使环境变量生效:
source /etc/profile
验证本地安装(命令行使用示例)
创建队列管理器和队列
1. 输入下列命令创建名为 neareast.queue.manager 的缺省队列管理器:
crtmqm -q neareast.queue.manager
将出现一些消息通知已创建队列管理器并且已创建缺省 WebSphere MQ 对象。
2. 要启动队列管理器,请输入以下命令:
strmqm
会显示一条消息通知队列管理器已启动。
3. 通过输入下列命令来启用 MQSC 命令:
runmqsc
会显示一条消息通知已启动MQSC 会话。MQSC 没有命令提示符。
4. 通过输入下列命令来定义名为 NEAREAST.QUEUE 的本地队列:
define qlocal (neareast.queue)
会显示一条消息通知已创建队列。注意: WebSphere? MQ 对象定义区分大小写。除非用单引号将以小写形式输入的作为 MQSC 命令的任何文本括起来,否则,它们会自动转换成大写形式。
另外MQSC的命令通常存在缩写形式的写法,如define命令的缩写是def,qlocal的缩写是ql,所以创建队列名为小写newq的缩写写法为:
def ql (‘newq’)
5. 通过输入下列命令来停止 MQSC:
end
将出现一些消息,然后回到命令提示符。
测试队列管理器和队列
1. 切换至 /opt/mqm/samp/bin 目录,这是样本程序的目录。
2. 使用下列命令将消息放入队列:
./amqsput NEAREAST.QUEUE
显示下列消息:
样本 AMQSPUT0 启动
目标队列是NEAREADT.QUEUE
3. 输入一些文本消息,可以敲回车输入换行,连敲两次回车则发送该消息(或按ctrl+d输入结束符),然后提示:
样本 AMQSPUT0 结束
现在消息已经放入了队列中,并且操作回到命令提示符。
4. 要从队列取出消息,请使用下列命令:
./amqsget NEAREAST.QUEUE
样本程序启动并显示刚才发送的消息。暂停之后,样本结束并回到命令提示符。
如果上述步骤都顺利完成,则说明MQ的服务安装成功了。
常用的控制台命令
常用队列管理命令:
注:前提是首先运行runmqsc启动MQSC。
1. 显示特定队列如Q1的信息:
dis q(Q1)
2. 显示队列管理器中的所有队列的信息:
dis q(*)
3. 删除队列Q1
delete qlocal(Q1)
4. 禁用特定队列如Q1上的put操作:
alter ql(Q1) put(disabled)
5. 将队列管理器的死信队列更改为 SYSTEM.DEAD.LETTER.QUEUE
alter qmgr deadq(SYSTEM.DEAD.LETTER.QUEUE)
利用样本程序收发消息:
注:样本程序放置在/opt/mqm/samp/bin目录下,运行样本程序之前要切换到该目录或配置适当的环境变量。
1. 用amqsput样本程序在队列上放置一个或多个消息,在每个消息后按 Enter。若要终止,则按Ctrl-d 以在标准输入上发出文件结束符信号:
amqsput Q1
2. 用 amqsgbr 样本程序,浏览 Q1 以查看队列上的消息:
amqsgbr Q1
3. 使用 amqsbcg 样本程序,浏览 Q1 以查看队列上的消息及其消息描述符:
amqsbcg Q1
4. 使用amqsget 样本程序浏览并清除 Q1 上的消息:
amqsget Q1
amqsget程序将持续一段时间来监听队列上的新消息,用Ctrl-c命令可以终止它。
队列管理器常用管理命令:
1. 启动指定名字(如QM1)的队列管理器:
strmqm QM1
2. 以常规方式终止队列管理器QM1:
endmqm QM1
3. 立即强制终止队列管理器QM1:
endmqm –i QM1
4. 删除队列管理器QM1:
dltmqm QM1
其它一些可能有用的命令
1. 查看系统中已经安装的所有MQ相关的包,安装失败时,可用于删除不完整的安装
rpm -qa | grep ^MQ
2. 卸载已经存在的安装包:
rpm -e MQSeriesSDK-7.1.0-3.x86_64
资源管理器
安装资源管理器
安装资源管理器便于进行图形化管理,它的安装依赖JRE,因此安装资源管理器之前可能需要先安装它:
rpm -ivh MQSeriesJRE-7.1.0-3.x86_64.rpmrpm -ivhMQSeriesExplorer-7.1.0-3.x86_64.rpm
然后,运行MQExplorer或strmqcfg命令,或者在系统菜单中找到“IBM WebSphere MQ Explorer”即可打开图形化的资源管理器。
常用操作
由于资源管理器是图形化的操作界面,可以很方便、直观地进行队列或队列管理器的创建、参数设置等操作,或者可视化地测试消息的收发、topic的发布与订阅,这里就不多说了。下图所示的即是创建一个topic之后,同时测试topic的发布与订阅时的场景:
附录:WebSphere MQ的组件明细
表 1. WebSphere MQ 组件和软件包 |
||||||
组件 |
描述 |
软件包 |
服务器 |
客户机(使用 SSL) |
||
运行时 |
必须安装的组件。应用程序开发需要此组件,它提供了对外部应用程序的支持。 |
MQSeriesRuntime |
X |
X |
||
服务器 |
服务器功能部件允许您在自己的计算机上运行队列管理器并与网络上的其他计算机连接。提供对应用程序的消息传递服务和排队服务,并支持 WebSphere MQ 客户机连接。 |
MQSeriesServer |
X |
|
||
SDK |
编译应用程序时需要此组件。 |
MQSeriesSDK |
X |
X |
||
客户机 |
WebSphere MQ 客户机是 WebSphere MQ 的一个小子集,它不包含队列管理器。提供对 WebSphere MQ 的远程访问。必须连接到服务器。要在安装服务器的机器上安装客户机,请使用服务器 CD-ROM;否则,请使用客户机 CD-ROM。 |
MQSeriesClient |
X |
X |
||
样本程序 |
样本应用程序。当要使用验证过程来检查WebSphere MQ 安装时,需要此样本程序. |
MQSeriesSamples |
X |
X |
||
Java? 消息传递 |
使用 Java 进行消息传递(包括 Java 消息传递服务)所需的文件。 |
MQSeriesJava |
X |
X |
||
SSL 支持 |
支持 SSL 密钥管理 |
MQSeriesKeyman |
X |
X |
||
IBM Java JRE(32 位) |
IBM 32 位 Runtime Environment for Linux on i5/OS? and pSeries?, Java 2 Technology Edition V5.0。 |
MQSeriesJRE |
X |
|
||
巴西葡萄牙语消息目录 |
巴西葡萄牙语消息目录 |
MQSeriesMsg_pt |
X |
X |
||
捷克语消息目录 |
捷克语消息目录 |
MQSeriesMsg_cs |
X |
X |
||
法语消息目录 |
法语消息目录 |
MQSeriesMsg_fr |
X |
X |
||
德语消息目录 |
德语消息目录 |
MQSeriesMsg_de |
X |
X |
||
匈牙利语消息目录 |
匈牙利语消息目录 |
MQSeriesMsg_hu |
X |
X |
||
意大利语消息目录 |
意大利语消息目录 |
MQSeriesMsg_it |
X |
X |
||
日语消息目录 |
日语消息目录 |
MQSeriesMsg_ja |
X |
X |
||
韩国语消息目录 |
韩国语消息目录 |
MQSeriesMsg_ko |
X |
X |
||
波兰语消息目录 |
波兰语消息目录 |
MQSeriesMsg_pl |
X |
X |
||
俄语消息目录 |
俄语消息目录 |
MQSeriesMsg_ru |
X |
X |
||
西班牙语消息目录 |
西班牙语消息目录 |
MQSeriesMsg_es |
X |
X |
||
简体中文消息目录 |
简体中文消息目录 |
MQSeriesMsg_Zh_CN |
X |
X |
||
繁体中文消息目录 |
繁体中文消息目录 |
MQSeriesMsg_Zh_TW |
X |
X |
||
联机帮助页 |
用于下列命令的美国英语版本的 UNIX? 联机帮助页:
|
MQSeriesMan |
X |
|
||
扩展事务客户机 |
允许客户机应用程序在同一个工作单元中执行下列操作的 WebSphere MQ 组件:
|
MQSeriesTXClient |
X |
|
||
WebSphere MQ 资源管理器(仅用于 x86 平台和 x86-64 平台) |
WebSphere MQ 资源管理器允许您管理并监视 WebSphere MQ 资源。 |
MQSeriesConfig |
X |
|
||
WebSphere Eclipse 平台(仅用于 x86 平台和 x86-64 平台) |
WebSphere Eclipse 平台是 WebSphere MQ 资源管理器和 WebSphere MQ 文件传输应用程序组件的必备软件。 |
MQSeriesEclipseSDK33 |
X |
|
||
WebSphere MQ 文件传输应用程序(仅用于 x86 平台) |
该文件传输应用程序允许您以 WebSphere MQ 消息的形式发送和接收普通文件。您可使用文件传输应用程序发送和接收任何格式、任何类型的文件,例如:ASCII Linux 格式(带有换行符)、ASCII 码文件 Windows? 格式(带有回车符/换行符)、二进制格式(例如,图像文件、字处理器文件、电子表格文件或 zip 文件)以及报告、信件、备忘录和图表。文件传输应用程序同时具有图形用户界面和命令行界面。 |
MQSeriesFTA |
X |
X |
||
组件 |
描述 |
文件集 |
服务器 |
客户机 |
||
IBM 全局安全性工具箱版本 7 |
证书和 SSL 基本运行时 - 32 位 |
gsk7bas |
X |
X |
||
IBM 全局安全性工具箱版本 7(仅用于 POWER?、 pSeries x86-64 和 zSeries? s390x 平台) |
证书和 SSL 基本运行时 - 64 位 |
gsk7bas64 |
X |
X |
||
IBM Java SDK(32 位) |
Intel? 体系结构上的 IBM 32 位 SDK for Linux Java 2 Technology Edition V5.0(用于 WebSphere MQ for Linux V7.0(x86 平台))。IBM 32 位 Software Developer‘s Kit (SDK) for Linux for i5/OS and pSeries Java 2 Technology Edition V5.0(用于 WebSphere MQ for Linux V7.0(POWER 平台))。zSeries 上的 IBM 31 位 SDK for Linux Java 2 Technology Edition V5.0(用于 WebSphere MQ for Linux V7.0(zSeries 平台))。 |
IBM-Java2-x86-SDK IBMJava2-ppc-SDK IBMJava2-s390-SDK |
X |
X |
||
IBM Java SDK(64 位)(仅用于 POWER、 pSeries x86-64 和 zSeries s390x 平台) |
IBM 64 位 Software Developer‘s Kit (SDK) for Linux for pSeries Java 2 Technology Edition V5.0(用于 WebSphere MQ for Linux V7.0(POWER 平台))。zSeries 上的 IBM 31 位 SDK for Linux Java 2 Technology Edition V5.0(用于 WebSphere MQ for Linux V7.0(zSeries 平台))。 |
IBM-Java2-SDK-ppc64-SDK IBM-Java2-SDK-x86_64-SDK IBM-Java2-SDK-s390x-SDK |
X |
X |