首页 > 解决方案 > MQ 能否在保持独立消息传递的同时支持同一队列的多个单独客户端?

问题描述

我们有多个应用程序环境(开发、QA、UAT 等)需要通过 MQ 连接到更少的提供程序环境。例如,提供者只有一个测试(我们称之为 TEST1)环境,所有客户端应用程序环境都需要与之交互。每个客户端环境必须只接收对相应环境发送的消息的 MQ 响应。这是一个大容量场景,因此已排除关联消息 ID。

现在 TEST1 设置了一个队列并且可以正常工作,但是如果客户端应用程序的一个环境想要使用它,则必须关闭其他环境,以便消息不会重叠。

MQ 是否支持让多个客户端连接到单个队列同时保留特定于客户端的消息传递的模型?如果是这样,控制在哪里(即通道、队列管理器等)?如果不是,是否是为每个相应客户端设置额外队列的唯一解决方案?

标签: ibm-mq

解决方案


在我与 IBM MQ 合作的多年中,我在这个问题上反复讨论。我得出的结论是,共享队列只会让生活变得更加困难。队列应该像万圣节的糖果一样分发。如果应用程序团队说他们的应用程序有 10 个组件,那么 MQAdmin 应该给他们 10 个队列。对于队列管理器或服务器或 CPU 或硬盘,资源使用没有区别。

此外,使用有意义且易于应用安全性的 MQ 命名标准。即HR(人力资源)部门

  • HR.PAYROLL.SALARY
  • HR.PAYROLL.DEDUTIONS
  • 人力资源、薪酬、福利
  • HR.员工.详细信息
  • HR.EMPLOYEE.Reviews
  • ETC...

推荐阅读