Pau*_*ell 8 architecture messaging activemq-classic msmq tibco-ems
如果我使用消息队列构建一个包含数十个发布者/订阅者的系统,我似乎有一些网络配置选项:
不同的技术似乎强制执行不同的配置 - 例如,MSMQ要求每台机器都有自己的本地队列,而Tibco EMS似乎经常用于集群,而不是每个消费者都有本地队列.
没有本地队列的缺点是什么,以及影响决策的因素是什么?
没有提供持久消息存储的本地队列意味着您无法保证消息传递.在具有代理实例的集群中使用RabbitMQ之类的东西可以为您提供持久的机制来存储要传递的消息.如果必须通过网络连接连接到远程代理以发送持久消息,则网络故障的风险更高.
MSMQ也是存储转发,但它不提供任何集群路由功能.这意味着应用程序必须完成工作(或在其上面有一个层,例如MassTransit或NServiceBus为您完成).
当我想到TIBCO时,我想到了一个集中的EMS服务器集群,应用服务器与之通信而不是在本地运行代理实例.围绕EMS和BusinessWorks应用程序服务器的GUI工具确实在这个世界中强制建立模型.
在本地存储消息的任何分布式情况下,重要的是确保机器本身具有适当的消息存储装备,具有快速磁盘和足够的磁盘以用于预期的消息积压/容量.