代码之家  ›  专栏  ›  技术社区  ›  Thomas Lundström

在Windows上对msmq的替代项进行排队?[关闭]

  •  31
  • Thomas Lundström  · 技术社区  · 16 年前

    如果要在运行.NET 2.0及更高版本的Windows下使用队列产品进行持久消息传递,那么现在存在哪些替代msmq的方法?我知道ActiveMQ( http://activemq.apache.org/ ,我看到了对wsmq的引用(指向 http://wsmq.net ,但该网站似乎已关闭。

    还有其他的选择吗?

    8 回复  |  直到 16 年前
        1
  •  10
  •   RogerV    16 年前

    我不能开始说关于TIBOCO EMS的足够好的东西——Java JMS消息传递规范的实现。TIBOCO EMS对.NET客户机提供了极好的支持——包括WinCE上的CuxFramework。NET。(他们也有C客户端库。)

    因此,如果您构建的是一个异构分布式应用程序,涉及运行在Windows、Unix(AIX/Solaris)、Linux或Mac OS X上的消息传递代码,那么Tibco EMS就是问题所在。

    在这里查看我的文章:

    Using JMS For Distributed Software Development

    我以前在微软工作过,在那里的时候我用msmq做了一些实现。但你知道,微软只关心Windows。他们依靠第三方为其他平台提供msmq客户端。我与TIBCO EMS的接触是一次更好的经历。很明显,Tibco比微软更了解消息传递。而TIBCO则致力于支持不同的客户机绑定。这就是他们最终将产品名称从TIBCO JMS更改为TIBCO EMS(企业消息服务)的原因。

    我确实围绕TIBCO EMS构建了异构软件系统。滚动Cy.net .NET WiFrm客户端通过TIBCO EMS消息与Java/JBaseAdvices层进行交互。(也有WinCE工业嵌入式计算机,使用Compact Framework.NET TIBCO客户端。)

    Links To My JMS Writings

        2
  •  17
  •   jpaugh JotaBe    8 年前

    可能不是这里的“最佳实践”建议…但基于现实生活的需要和经验: 我们有分布式系统,运行每10个客户机的60个盒子都执行任务X,它们需要从队列中获取下一个任务。正在从另一个“客户机”馈送队列…

    我们使用了进程间通信,我们使用了msmq,我们尝试了服务代理…它长期不起作用,因为你把你的应用程序控制权交给了微软。只要你的需求得到满足,它就会发挥很大的作用。当你需要一些不被支持的东西时,它会变成地狱。

    我们最好的解决方案是:使用SQL数据库表作为队列。不要在那里重新发明轮子,因为你会犯错误(锁)。有关于如何做的信息,这很容易,我们每24小时处理超过200K条消息(60x10=600条并发读写到队列中)。除了处理其余应用程序的同一个SQL Server之外…

    msmq不工作的一些原因:

    1. 当您需要将队列的逻辑更改为非FIFO,但类似于“最旧的红色消息”或“最旧的蓝色消息”时,您不能这样做。(我知道人们会说什么,你可以通过 红色队列 和A 蓝色队列 …。但是,如果队列的数量/类型是动态的(基于应用程序的管理方式和每天的更改),该怎么办?)

    2. 它增加了一个故障点和部署噩梦(队列是一个故障点,您需要处理在所有框上设置正确的权限来读/写消息等),在企业软件中,您为这些类型的事情付出了代价。SQLServer…所有客户机都已经在从数据库中写入/读取数据,它只是多了一个表。

        3
  •  9
  •   Sixto Saez    14 年前

    The RabbitMQ framework 这里似乎被忽视了。如果人们仍然关心,它确实有一个.NET 2.0代码库,并且附带了一个类似于netmsmqbinding的wcf绑定。绑定自然至少需要.NET 3.0,并且它比内置的netmsmqbinding具有更多的功能。最重要的是,它是单声道友好。值得一看。

        4
  •  7
  •   wonea Ilya Smagin    8 年前

    那么SQL 2005呢 service broker ?

        5
  •  3
  •   James Strachan    16 年前

    为什么不使用ActiveMQ?:)

        6
  •  3
  •   MotoWilliams    16 年前

    如果成本不是问题( 还有一个快速SKU )然后看看80万磅重的大猩猩。WebSphere MQ(MQ系列)。它实际上运行在任何平台上,支持许多不同的队列管理器和消息传递模式,在这里列出它们确实不合适。

        7
  •  1
  •   Patrick McEvoy    16 年前

    如果高可用性很重要,那么亚马逊的SQS值得一看。如果消息来自不同的物理位置,则不会有太多额外开销。便宜且可扩展!

        8
  •  1
  •   asyncwait    14 年前

    Redis是这个平台上的另一个热门产品。检查它们基于集合的队列实现以及pub/sub模式。看起来很刺激