Multicasting, Messaging, ActiveMQ vs. MSMQ?我正在为我们的产品开发消息传递/通知系统。基本要求是:
这些库将用C#编写。 Spring.NET刚刚发布了一个里程碑式的构建,其中包含许多不错的消息传递抽象,这非常好-我计划广泛使用它。我的基本问题可以归结为消息中间人的问题。我的体系结构类似于app->消息代理队列->服务器应用程序,它侦听,将所有消息分发到它们需要去的地方,并处理这些长寿命消息的生命周期->消息代理队列或主题->侦听应用程序。 最后一个问题:我应该使用哪个消息代理?我对ActiveMQ有偏见-我们在上一个项目中使用了它并喜欢它。除了它是Java之外,我真的想不出有任何解决方案,它要求将Java安装在服务器上的某个地方,这对于使用此服务的某些人来说可能很难。我一直在寻找的另一个选项是MSMQ。由于某些未知原因,我对此有偏见,而且它似乎也没有强大的多播支持。 有人用过MSMQ这样的东西吗?任何利弊,可能会以一种或另一种方式影响投票的东西? 最后一件事,我们正在使用.NET 2.0。 我在使用ActiveMQ时有点偏见,但是上面列出的MSMQ的所有好处几乎也确实适用于ActiveMQ。 ActiveMQ的其他优点包括
您提到的主要缺点是ActiveMQ代理是用Java编写的。但如果确实需要,可以将其作为.net程序集在IKVM上运行-或将其作为Windows服务运行,或者通过GCJ将其编译为DLL / EXE。 MSMQ可能会或可能不会用.NET编写-但是它的正确实现方式并没有多大关系? 无论您选择MSMQ还是ActiveMQ,我都建议至少考虑使用NMS API,正如您所说的那样,它已很好地集成到Spring.NET中。该API有一个MSMQ实现,以及TibCo,ActiveMQ和STOMP的实现,它们将通过StompConnect支持任何其他JMS提供程序。 因此,通过选择NMS作为您的API,您可以避免锁定任何专有技术-然后您可以随时轻松地切换消息传递提供程序;而不是将您的代码全部锁定在专有API 中 MSMQ的优点。
缺点:
这是MSMQ的好博客 看看zeromq。它是最快的消息队列之一。 那个领域有很多选择... 免费:MantaRay对等点完全兼容JMS的系统。 Mantaray有趣的部分是,您只需要定义消息的去向,MantaRay便将消息路由到任何地方,从而将您的消息发送到目的地-因此,它更能抵抗消息传递结构中各个节点的故障。 付费:在我的日常工作中,我管理一个具有数百个节点的IBM WebSphere MQ消息传递系统,并且发现它非常好。我们最近还购买了Tibco EMS,它看起来也很好用。 保罗/ 我建议您看看TIBCO企业消息服务-EMS,这是一种高性能消息产品,支持多播,路由,支持JMS规范,并提供企业范围的功能,包括您的要求,例如使用文件的fireforget和消息持久性/ database使用共享状态。 作为参考,FEDEX在TIBCO EMS上运行 http://www.tibco.com/software/messaging/enterprise_messaging_service/default.jsp 如果我提供许多其他参考资料,您真的会感到惊讶。 |