本地队列介绍
- 本地队列又分为普通本地队列和传输队列,普通本地队列是应用程序通过API对其进行读写操作的队列;传输队列可以理解为存储-转发队列,比如:我们将某个消息交给MQ系统发送到远程主机,而此时网络发生故障,MQ将把消息放在传输队列中暂存,当网络恢复时,再发往远端目的地。
- 一个本地队列是一个物理上位于本地队列管理器中的队列。本地队列实际上存在于本地系统。
- 的内存或磁盘存储中。本地队列管理器控制队列的访问。应用程序可以“PUT”消息到本地队列,也可以从本地队列“GET”消息,另外程序还可以查询或修改这些队列的某些属性。对队列属性的修改需要相应的权限。
- 传输队列是临时存储目标为远程队列管理器的消息的队列。队列管理器利用传输队列把消息分阶段地发向远程队列。队列管理器和消息移动程序一起负责把数据传送到远程队列。当队列管理器收到把一条消息发往远程队列的要求后,它把消息发送到一个与目的队列管理器相关联的传输队列,传输队列位于本地队列管理器上。目的队列管理器的名称可能由应用程序提供,也可以从远程队列定义中得到。
- 一个传输队列是两个队列管理器之间的连接的一端。所有直接目的地是同一队列管理器的消息都可放在同一个传输队列上,这些消息的最终目的可能不一样。把消息从一个队列管理器传送到另一个队列管理器只需要一个传输队列,然而也有可能在两个队列管理器之间存在着多个连接以提供不同的传输服务,每个连接都带有一个不同的传输队列。
- 传输队列是由MCA处理的,MCA负责在队列管理器之间可靠地传送消息。MCA实际上是处理传输队列上消息的MQI应用程序。
- 本地队列简单点说就是是用于本地服务器接收消息的队列。
- 本地传输队列简单点说就是和远程队列搭配远程传输到其他网络的服务器的临时队列。
本地队列创建
连接工具:Xshell
- 登录系统
su - mqm
- 查看当前机器上的队列管理器
dspmq
- 创建队列管理器QM_M
crtmqm QM_M
- 查看当前机器上的队列管理器,包含刚才创建的QM_M,且当前状态为Ended immediately
dspmq
- 启动队列管理器QM_M
strmqm QM_M
- 查看当前机器上的队列管理器,此时QM_M已启动,状态为Running
dspmq
- 启动MQSC界面
runmqsc QM_M
- 创建本地队列Q1
DEFINE QLOCAL(Q1)
- 结束MQSC界面
end
- 向创建的本地队列Q1中写入消息,连续两个enter会结束写入消息的状态
amqsput Q1 QM_M
注意:如果提示命令amqsput不存在就执行
PATH=$PATH:/opt/mqm/samp/bin
- 查看队列中的消息
amqsgbr Q1 QM_M
- 获取队列中的消息
amqsget Q1 QM_M
注意:使用amqsget命令时,不会马上结束,会继续监听该队列一段时间,若在监听时间内该队列再次收到新的消息,该未结束的命令则会继续打印新的消息。可以自行打开两个Xshell页进行尝试。
amqsgbr与amqsget的区别
- amqsgbr 命令查看队列中的消息后,不对队列产生任何影响,队列中的消息不变
- amqsget 命令获取队列中的消息后,会将队列中的消息进行清除,该命令获取过的消息不再存在于队列中