ibm-mq - MQ 能否在保持独立消息传递的同时支持同一队列的多个单独客户端?
问题描述
我们有多个应用程序环境(开发、QA、UAT 等)需要通过 MQ 连接到更少的提供程序环境。例如,提供者只有一个测试(我们称之为 TEST1)环境,所有客户端应用程序环境都需要与之交互。每个客户端环境必须只接收对相应环境发送的消息的 MQ 响应。这是一个大容量场景,因此已排除关联消息 ID。
现在 TEST1 设置了一个队列并且可以正常工作,但是如果客户端应用程序的一个环境想要使用它,则必须关闭其他环境,以便消息不会重叠。
MQ 是否支持让多个客户端连接到单个队列同时保留特定于客户端的消息传递的模型?如果是这样,控制在哪里(即通道、队列管理器等)?如果不是,是否是为每个相应客户端设置额外队列的唯一解决方案?
解决方案
在我与 IBM MQ 合作的多年中,我在这个问题上反复讨论。我得出的结论是,共享队列只会让生活变得更加困难。队列应该像万圣节的糖果一样分发。如果应用程序团队说他们的应用程序有 10 个组件,那么 MQAdmin 应该给他们 10 个队列。对于队列管理器或服务器或 CPU 或硬盘,资源使用没有区别。
此外,使用有意义且易于应用安全性的 MQ 命名标准。即HR(人力资源)部门
- HR.PAYROLL.SALARY
- HR.PAYROLL.DEDUTIONS
- 人力资源、薪酬、福利
- HR.员工.详细信息
- HR.EMPLOYEE.Reviews
- ETC...
推荐阅读
- html - 带有摄像头捕获的 Vue v-file-input
- c# - Azure App Servce 的 .Net Core 3.1 Web API 延迟问题
- docker - 无法访问 Kubernetes 仪表板面板(503 没有可用的端点)
- mysql - 某些查询的Mysql读取副本速度慢
- c++ - 具有多个空格的增强拆分功能
- javascript - React:如何动画移除 DOM 元素?
- java - 在我的实现中,我希望该方法具有不同的返回类型
- openapi - 在 openapi 中的两个不同路径之间共享 operationId
- python - Python Black hooks(语言:系统)
- conda - 使用配方时如何运行导入测试?(不适用于 bdist_conda)