文章参考:https://developer.ibm.com/zh/components/ibm-mq/gettingstarted/
在对IBM MQ有了一定的认识后,就要开始使用MQ来进行简单的收发消息了
首先是,基于本地消息队列来发送消息
基于本地消息队列发送消息
设置队列管理器
首先,在设置队列管理器之前,必需安装好IBM MQ。
安装完成后,开启IBM WebSphere MQ可视化应用,找到队列管理器目录,新建队列管理器
填写管理器名称后,点击两次下一步,勾选创建服务器连接通道选项,方便后面与远程MQ通信
点击下一步,这里可以进行MQ监听端口的配置,默认1414,可能存在端口占用的情况,可以选择1415/1416等等
配置完成后,点击完成,可以在队列管理器列表找到刚刚创建的QM管理器
创建本地消息队列
队列项右键创建一个本地消息队列
填写队列名称后,选择完成
接下来就可以在队列列表中看到创建的本地队列了
基于本地队列发送消息并浏览
右键选择本地队列并放入一个测试消息
放入消息后,刷新界面可以看到队列深度发生变化
右键本地,浏览队列的消息
发送消息到远程消息队列
首先,同样要创建一个消息队列管理器
步骤同上一致,这里我们创建一个名为testremoteMQ,监听端口1417的队列管理器
然后,我们要创建一个本地的传输队列,主要用来进行消息的传输
右键,新建一个本地队列常规配置中,修改其为传输队列
然后,构建一个远程队列,和我们的远程MQ建立连接
右键,新建一个远程队列定义remoteMQ
在常规配置中,配置远程队列(接收消息的目的队列),这里直接用上面创建的testQM1中定义的localMQ作为远程的消息的接收队列。然后配置远程消息队列管理器,也就是testQM1,以及传输队列,也就是上述的transmissionMQ。配置完成后,点击完成。
紧接着,就要构建用于消息传输的通道了。
首先,我们在发送方(testremoteMQ)构建一个发送方通道senderChannel
配置接收方的 ip/主机名 以及对应端口,注意格式:ip(端口),然后选择发送方创建的传输队列transmissionMQ
创建完成发送方通道后,对应的就需要创建接收方通道。
切换到testQM1管理器中,创建一个接收方通道receiverChannel
创建完成后,启动发送方通道。然后,找到IBM的安装路径,到bin目录下执行cmd
然后,执行amqsput脚本 ,命令格式为amqsput [发送队列] [发送方队列管理器]
命令执行成功后,输入测试消息,并按两次回车
查看接收方消息队列是否有接收到消息
可以看到接收方消息队列并未接收到消息,这是因为我们的发送方通道并未成功和接收方通道建立连接。因为我们定义的发送方通道和接收方通道非同名,因此建立连接时会失败。这里我们将接收方通道也改成,然后重新启动发送方通道
这里可以看到我们的通道已经正常运行了
此时,通道连接成功后,传输队列中的消息就会经由通道发送到接收方
我们接收方的本地队列深度也加1,数据消息也成功传输到了本地接收队列
基于客户-服务端发送消息
实现原理:首先,由IBM客户端和服务端建立连接,然后发送消息至服务端,服务端接收到消息后,通过传输队列经由发送方通道传输到接收方通道,最后被远程的接收方队列接收。
首先我们要在,testremoteQM管理器的通道创建一个服务器连接通道,方便客户端和我们的管理器建立连接。
配置MCA标识
这里我们可以通过 “此电脑-》管理-》本地用户和组” 找到mqm用户组,添加当前用户,并配置MCA为当前用户
配置完成后,就要开始构建我们的客户端。
这里需要配置一个MQSERVER的环境变量,来方便amqsput获取到服务器连接通道。打开 “此电脑-》属性-》高级系统设置-》环境变量” ,在当前用户中配置MQSERVER变量,值为连接通道名/TCP/ip(端口号),这里我们需要配置成serverConn/TCP/127.0.0.1(1417)
注意:这里的连接通道名和ip,端口号都要和我们的服务段管理器的连接通道名、ip以及端口号一致
配置完成后,客户端就建立完成了。
接下来,通过amqsput命令发送消息
命令amqsput remoteMQ
这里会返现连接失败,这里我们需要将连接管理器的通道认证记录禁用,右键testremoteQM,选择属性-》通信,禁用通道认证