2

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

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

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

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

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

4

5 回答 5

3

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

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

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

于 2009-04-09T09:42:57.457 回答
1

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

于 2009-04-06T15:50:43.230 回答
1

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

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

于 2009-04-07T00:13:18.170 回答
0

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

http://activemq.apache.org

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

于 2009-04-08T15:29:49.330 回答
0

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

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

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

于 2016-05-13T08:34:52.503 回答