IBMMQ(基础)学习随笔-队列管理器别名

    在将消息发送到群集或从群集发送出去时,使用队列管理器别名隐藏队列管理器的名称,并平衡发送到群集的消息的工作负载平衡。
    使用带有空白的远程队列定义创建的队列管理器别名RNAME有五种用途:

1. 发送消息时重新映射队列管理器名称
    队列管理器别名可用于将MQOPEN调用中指定的队列管理器名称重新映射到另一个队列管理器。它可以是集群队列管理器。例如,队列管理器可能具有队列管理器别名定义:

DEFINE QREMOTE(YORK) RNAME(' ') RQMNAME(CLUSQM)

    YORK 可以作为队列管理器CLUSQM的别名。当应用程序向队列管理器YORK发送消息时,本地队列管理器会将队列管理器名称解析为CLUSQM。如果本地队列管理器名称不为CLUSQM,则它将消息放在要移动到CLUSQM的集群传输队列上。它还将传输头改为CLUSQM而不是YORK。

2. 发送消息时更改或指定传输队列
    别名可用于将群集连接到非群集系统。例如,集群ITALY中的队列管理器可以与集群外部的名为PALERMO的队列管理器进行通信。为了进行通信,集群中的队列管理器之一必须充当网关。从网关队列管理器中,发出命令:

DEFINE QREMOTE(ROME) RNAME(' ') RQMNAME(PALERMO) XMITQ(X) CLUSTER(ITALY)

    该命令是队列管理器别名定义。它定义并发布ROME为队列管理器,群集ITALY中任何队列管理器发出的消息都可以通过该队列队列管理器进行多跳以到达其目的地PALERMO。通过队列管理器名称ROME打开队列并放入队列中的消息将通过队列管理器别名发送到网关队列管理器。到达那里后,消息将被放在传输队列X中,并通过非集群通道发送到队列管理器PALERMO。
    在此示例中,名称ROME的选择并不重要。QREMOTE和RQMNAME的值可以是相同的。

3. 接收消息时确定目的地
    当队列管理器接收到一条消息时,它从传输头中提取目标队列和队列管理器的名称。它查找与传输头中的队列管理器名称相同的队列管理器别名定义。如果它找到一个队列管理器,它将队列管理器别名定义中的RQMNAME替换为传输头中的队列管理器名称。
    以这种方式使用队列管理器别名有两个原因:
    (1). 将消息定向到另一个队列管理器
    (2). 将队列管理器名称更改为与本地队列管理器相同

4. 在网关队列管理器中使用队列管理器别名在不同集群中的队列管理器之间路由消息
在这里插入图片描述
    如上图,QM1,QM2,QM3组成两个集群,QM1与QM2组成集群CL1,QM1与QM3组成集群CL2。路由的工作方式如下:
    每个集群中的每个队列管理器都有一个队列管理器别名定义在QM1上,这样所有的别名将汇聚在所有的集群中,每个队列管理器别名至少在一个集群中能够解析成为真正的队列管理器。在上图中,QM2别名被定义在队列管理器QM1上,被集群CL1与集群CL2共享,并且被解析为队列管理器QM2。连接着QM3的ServerApp使用回执队列管理器QM2与回执队列RQ创建了一个回执消息。因为队列管理器别名QM2定义在集群CL2中的QM1上,而队列管理器QM2不再集群CL2中,所以消息将被路由到具有别名QM2定义的QM1上。也就是说在消息不能直接发送到对应的队列管理器的情况下,它将被发送到具有对应队列管理器别名定义的队列管理器上。
    消息到达QM1后,QM1将消息放到QM1上的集群传输队列上以便将消息传输至队列管理器QM2。因为QM1上定义的队列管理器别名QM2将QM2定义为真正的目标队列管理器,QM1将消息路由到QM2。QM1从集群CL1的存储库找到QM2的连接信息,并将消息路由到QM2。注意:要让到达QM1的消息重新路由,需要ServerApp打开应答队列RQ时使用MQBND_BIND_NOT_FIXED,如果ServerApp使用MQBND_BIND_ON_OPEN方式打开应答队列,则消息在QM1上不会被重新路由,并最终会进入死信队列。 使用方式见配置来自集群的请求与回复消息

5. 使用队列管理器别名作为进入集群的网关,以平衡来自集群外的消息
    在集群中选择一个队列管理器定义队列管理器别名作为集群名称,集群外部的对列管理器通过该别名与集群进行消息交互,作为网关的队列管理器必须包含以下规则之一:
    1. 网关队列管理器不能包含队列EDINBURGH的实例
    2. 网关队列管理器在ALTER QMGR上指定CLWLUSEQ(ANY)

注:文章摘自IBMMQ知识中心队列管理器别名,并加以自己的理解完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值