多播,消息传递,ActiveMQ与MSMQ?

Chr*_*org 22 messaging activemq-classic msmq

我正在为我们的产品开发消息/通知系统.基本要求是:

  • 火与忘记
  • 持久性消息集,可能更新,留在那里直到发送者说要删除它们

这些库将用C#编写.Spring.NET刚刚发布了一个具有大量优秀消息抽象的里程碑版本,这很棒 - 我计划广泛使用它.我的基本问题归结为消息经纪人的问题.我的架构看起来像应用程序 - >消息代理队列 - >侦听的服务器应用程序,将所有消息分派到他们需要去的地方,并处理那些长期消息的生命周期 - >消息代理队列或主题 - >监听应用.

最后,问题是:我应该使用哪个消息代理?我偏向于ActiveMQ - 我们在上一个项目中使用它并喜欢它.我不能想到对它的单一攻击,除了它是Java,并且需要在某个地方的服务器上安装java,这对于将使用这项服务的一些人来说可能很难卖.我一直在关注的另一个选择是MSMQ.我出于某种未知原因对它有偏见,而且它似乎也没有很好的多播支持.

有没有人用MSMQ这样的东西?任何利弊,可能会以某种方式影响投票的东西?

最后一点,我们使用的是.NET 2.0.

Jam*_*han 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中


Dar*_*ten 13

MSMQ的优点.

  • 它内置于Windows中
  • 它支持事务,它还支持没有事务的队列
  • 这很容易设置
  • AD集成
  • 速度很快,但您需要将ActiveMQ和MSMQ与流量进行比较才能知道哪个更快.
  • .NET支持它诞生
  • 支持火灾和忘记
  • 如果你有看的读者,你可以偷看队列.不确定是否可以编辑队列中的消息.

缺点:

  • 4MB邮件大小限制
  • 2GB队列大小限制
  • 队列项目保存在磁盘上
  • 不是主流的MS产品,文档有点不确定,或者自从我使用它以来已经过了几年.

这是MSMQ的一个很好的博客


小智 7

看看zeromq吧.它是最快的消息队列之一.