Ibm mq 传输队列的预期用途

Ibm mq 传输队列的预期用途,ibm-mq,Ibm Mq,这是关于IBMWebSphereMQV7的一个非常基本的问题 关于传输队列,我的理解是它仅用于驻留在同一队列管理器中的远程队列。因此,如果我想把消息放到队列中,我需要把它放到远程队列中 是这样的。 应用-->远程队列-->传输队列 我的问题是: 可以这样将消息直接放入传输队列吗? 应用程序-->传输队列 --于2014年3月17日修改-- 我找到了一种将消息直接放入传输队列的方法。我不知道这是一个常见的用法,但为了做到这一点,我需要在消息前面添加MQXQH。我试过并确认它有效。请参阅信息中心参考

这是关于IBMWebSphereMQV7的一个非常基本的问题

关于传输队列,我的理解是它仅用于驻留在同一队列管理器中的远程队列。因此,如果我想把消息放到队列中,我需要把它放到远程队列中

是这样的。
应用-->远程队列-->传输队列

我的问题是:
可以这样将消息直接放入传输队列吗?
应用程序-->传输队列

--于2014年3月17日修改--


我找到了一种将消息直接放入传输队列的方法。我不知道这是一个常见的用法,但为了做到这一点,我需要在消息前面添加
MQXQH
。我试过并确认它有效。请参阅信息中心参考。

切勿直接放入传输队列。如果你不知道自己在做什么,那是很危险的


您应该将邮件放入远程队列。远程队列与本地队列不同。远程队列只是指向另一个队列管理器上的队列的指针

您不应该直接使用传输队列。当将消息发送到远程队列管理器时,消息通道代理(MCA)将其用作临时存储

这是分布式队列-即,您将消息发布到队列管理器a,并希望将其路由到队列管理器B上的本地队列。因此,您在QM-a上定义一个引用,引用QM-B上的本地队列。此引用是“远程队列定义”


远程队列定义指定传输队列名称。传输队列绑定到MCA,而MCA又知道远程QM。

尽管可以将消息直接放到XMitQ上,但允许这种情况发生的风险相当大,因此大多数管理员将阻止应用程序直接访问该队列。正如您所发现的,可以构造一个带有传输队列头的消息,然后是一个带有
MQMD
和有效负载的普通消息。(事实上,MCA就是这样运作的。)

这里的问题是QMgr没有检查驻留在有效负载中的
MQMD
中的值,因此您可以将
mqm
作为
MQMD.UserID
,然后将消息寻址到远程命令队列,并授予自己对该远程QMgr的管理员访问权限

具有安全意识的管理员通常使用两个安全控件来防止这种情况。首先,他们不允许直接访问XMitQ。这有助于发送出站消息。更重要的是,他们将其
RCVR
/
RQSTR
/
/
CLUSRCVR
频道的
MCAUSER
设置为未经授权将消息放入任何敏感队列的非管理员用户ID

当然,另一个问题是,您所描述的完全违背了WMQ的名称解析。通过将路由嵌入应用程序,可以防止管理员在网络级别调整通道权重、群集设置、故障切换和负载分布。需要重新分配流量吗?重新部署代码。这不是一个好计划


因此,出于安全原因,并且因为您为获得WMQ的可靠性付出了很多钱——其中大部分来自动态寻址和名称解析功能——强烈建议不要编写直接写入XMitQ的应用程序。

我想确保队列的正确使用——正如您所说,消息的处理方式应该与“客户端”-->“远程队列(指针)”-->“传输队列”-->“其他MQ的本地队列”。“那么,非常感谢您的确认。顺便说一句,实际上可以将消息直接放入传输队列吗?实际上我没法直接说出来,但我只是好奇。呃,你知道吗。实际上,我找到了一种将消息直接放入传输队列的方法。我不知道这是一个常见的用法,但为了做到这一点,我需要在消息前面加上MQXQH。我试过并确认它有效。供参考: