【问题标题】:What technology should I use to implement a durable subscriber accessible from .NET?我应该使用什么技术来实现可从 .NET 访问的持久订阅者?
【发布时间】:2009-04-06 15:23:14
【问题描述】:

假设是一个绿色项目,选择何种技术、库、中间件等可以最容易地在 Windows 和 .NET 上通过持久订阅实现发布-订阅消息传递?我使用 Google 找到了 WCF Peer Channel,这似乎可以完成我需要的大部分工作,但我认为它不能保证消息排序,也不能将消息持久保存到磁盘以确保可靠性。微软说这些功能可以叠加在上面,但我一直在寻找已经具备这些功能的东西。

MSMQ 分发列表接近我想要的,但我更喜欢消息传递层不必预先知道所有客户端的东西。

订阅人数不多,大概不到20个。

发布者和订阅者均在 C#/.NET 中实现并在 Windows 上运行。

编辑:我正在研究面向消息的中间件和服务总线建议。我熟悉这个领域的企业级产品——我真的在寻找简单轻巧的东西。查看每个产品需要一段时间,但我会尝试总结一下我的发现。

【问题讨论】:

  • 你最后做了什么?
  • 这是被事件克服的事情之一 - 即需求发生了变化。 :)

标签: .net messaging publish-subscribe


【解决方案1】:

我已经完成了完全相同的事情(.Net 上的 C# 中的发布者和消费者),具有大量持久订阅,并且我实际上为此使用了 SonicMQ。虽然它被标榜为 JMS 提供商,但它拥有纯 .net 客户端库,这些库非常类似于运行良好的 JMS API。

我对 RabbitMQ 非常熟悉,它目前不支持持久订阅,如果它们用完代理的内存空间(因此它不能真正将它们流到磁盘)。对于您的消息流(生产者和消费者)都适合内存的情况,但当您需要持久的持久订阅系统时,这是一个很好的解决方案。

作为该项目的一部分,我评估了 ActiveMQ、Tibco EMS 和 FioranoMQ,而 SonicMQ 无疑是最好的解决方案,尤其是对于 C# 客户端。价格不菲,但值得一看。

【讨论】:

    【解决方案2】:

    你看过RabbitMQ吗?不能说我自己有过这方面的经验,但是当兔子们在工作中进行技术演讲时,他们似乎知道他们在说什么:)

    【讨论】:

      【解决方案3】:

      看看消息总线类型的架构怎么样。有几个开源总线实现位于 MSMQ 之上。

      使用这些库之一,您的服务可以在需要时发布“事件”(消息)。在启动时,服务器不需要任何配置提前告诉它有关客户端的信息。当客户端启动时,它们会订阅一个已知的服务器端点,然后服务器会从那里发布消息给它们。

      【讨论】:

        【解决方案4】:

        Apache ActiveMQ 还支持 .NET(和许多其他语言)。开源,也可通过商业支持获得。

        http://activemq.apache.org

        易于设置和配置。 自动创建消息目的地。 支持点对点和发布/订阅通信模型。

        【讨论】:

          【解决方案5】:

          我们基于 ZeroMq(传输)、Cassandra(对等发现和持久性)和 Protobuf(序列化)编写了对等消息总线 Zebus。

          它是开源和生产测试的https://github.com/Abc-Arbitrage/Zebus

          Zebus 正在积极开发中,并在大量内部生产中使用。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-05-30
            • 2017-01-24
            • 1970-01-01
            • 2014-10-12
            • 2012-08-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多