我正在为我们的产品开发消息/通知系统。基本要求是:
库将用C#编写。 Spring.NET刚刚发布了一个具有大量优秀消息抽象的里程碑版本,这很棒 - 我计划广泛使用它。我的基本问题归结为消息经纪人的问题。我的架构看起来像app - >消息代理队列 - >侦听的服务器应用程序,将所有消息分派到他们需要去的地方,并处理那些长期存在的消息的生命周期 - >消息代理队列或主题 - >听力应用程序。
最后,问题是:我应该使用哪个消息代理?我偏向于ActiveMQ - 我们在上一个项目中使用它并喜欢它。我不能想到对它的单一攻击,除了它是Java,并且需要在某个地方的服务器上安装java,这对于将使用这项服务的一些人来说可能很难卖。我一直在关注的另一个选择是MSMQ。我出于某种未知的原因对它有偏见,而且它似乎也没有很好的多播支持。
有没有人使用MSMQ这样的东西?任何利弊,可能会以某种方式影响投票的东西?
最后一件事,我们使用的是.NET 2.0。
答案 0 :(得分:22)
我在ActiveMQ工作时有点偏颇,但几乎所有上面列出的MSMQ的好处也适用于ActiveMQ。
ActiveMQ的其他一些好处包括
你提到的主要缺点是ActiveMQ代理是用Java编写的;但是你可以在IKVM上作为.net程序集运行它,如果你真的想要 - 或者将它作为Windows服务运行,或者通过GCJ将其编译为DLL / EXE。 MSMQ可能也可能不是用.NET编写的 - 但实现它的实现方式并不重要?
无论您选择MSMQ还是ActiveMQ,我都建议您至少考虑使用NMS API,正如您所说,它与Spring.NET集成在一起。这个API有一个MSMQ实现,以及TibCo,ActiveMQ和STOMP的实现,它们将通过StompConnect支持任何其他JMS提供者。
因此,通过选择NMS作为您的API,您将避免锁定任何专有技术 - 然后您可以在任何时间点轻松切换消息提供商;而不是将您的代码全部锁定到专有API
答案 1 :(得分:13)
MSMQ的优点。
缺点:
这是MSMQ
的好博客答案 2 :(得分:7)
看看zeromq。它是最快的消息队列之一。
答案 3 :(得分:3)
我建议您查看TIBCO Enterprise Messaging Service - EMS,它是一种高性能消息传递产品,支持多播,路由,支持JMS规范,并提供企业级功能,包括您的要求,例如使用文件的忘记和消息持久性/ database使用共享状态。
作为参考,FEDEX在TIBCO EMS上运行 作为其消息传递基础设施。
http://www.tibco.com/software/messaging/enterprise_messaging_service/default.jsp
如果我提供了很多其他参考资料,你真的会感到惊讶。
答案 4 :(得分:3)
那个舞台上有很多选择...
免费:MantaRay是一个完全符合JMS标准的点对点系统。 Mantaray的一个有趣的部分是你只需要定义消息的去向,MantaRay无论如何都要对它进行路由,以便让你的消息得到它的排序 - 这样它就能更好地抵御消息传递结构中各个节点的故障。
付费:在我的日常工作中,我管理着一个包含数百个节点的IBM WebSphere MQ消息传递系统,并且发现它非常好。我们最近也购买了Tibco EMS,看起来它也很好用。
保罗/