我应该使用什么技术来实现可从.NET访问的持久订阅者?

时间:2009-04-06 15:23:15

标签: .net messaging publish-subscribe

假设一个绿色领域项目,在Windows和.NET上使用持久订阅实现发布 - 订阅消息传递最容易选择哪种技术,库,中间件等?我找到了使用Google的WCF Peer Channel,它似乎完成了我所需要的大部分工作,但我认为它不能保证消息的排序,也不会将消息保留在磁盘上以保证可靠性。微软表示这些功能可以分层,但我一直在寻找已有的功能。

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

订阅者数量不多,可能不到20个。

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

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

5 个答案:

答案 0 :(得分:3)

我完成了同样的事情(C#on .Net上的发布者和消费者),有大量的持久订阅,我实际上使用了SonicMQ。虽然它被称为JMS提供者,但它具有纯粹的.net客户端库,这些库非常类似于非常好用的JMS API。

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

作为该项目的一部分,我评估了ActiveMQ,Tibco EMS和FioranoMQ,而SonicMQ是最好的解决方案,特别是对于C#客户端。它价格昂贵,但值得一看。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

如何查看消息总线类型的体系结构。有几个开源总线实现位于MSMQ之上。

使用其中一个库,您的服务可以在需要时发布“事件”(消息)。在启动时,服务器不需要任何配置提前告知客户端。当客户端启动时,他们会订阅一个已知的服务器端点,并且只要它发出消息,服务器就会从那里发布它。

答案 3 :(得分:0)

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

http://activemq.apache.org

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

答案 4 :(得分:0)

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

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

Zebus正在积极开发中,并且在内部生产中使用很多。