c# - 发布/订阅和基于内容的订阅

标签 c# .net publish-subscribe

我正处于设计一个事件驱动架构系统(基本的发布/订阅)的开始阶段。实际的工具和框架尚未选定,因此这个问题更具概念性,而不是特定于技术(尽管它将在 .Net 中完成)。

金融交易系统是这种情况近乎完美的类比。想象一个不断接收市场数据的服务器(实时或间隔 - 这并不重要)。服务器将发布特定证券的定价更新。出于此问题的目的,假设服务器正在“监视”并发布 1000 只证券。

有 100 个客户端应用程序是此服务的订阅者。每个客户只会对正在发行的证券的一小部分感兴趣。

如果客户端收到所有 1000 种证券的消息,则必须解析它们,这显然会产生更多的网络流量和客户端的更多负载。

另一方面,必须在服务器端解析消息内容似乎会增加发布/路由时的负载。

在这种类型的架构中通常如何处理?

最佳答案

看看 RabbitMQ 提供的一些教程

Link

特别注意,您可以使用路由和主题将消息传送到适用的客户端。这里的“服务器”可以简单地将消息放入队列中,客户端可以简单地根据他们订阅的路由/主题监听某些消息。可能还有很多其他选项,但这似乎是一个不错的选择。RabbitMQ 有一些可用的 .Net 客户端,我对他们的产品非常满意。

我也使用过 IBM MQ 和 MSMQ,但我更喜欢 Rabbit。主要是因为它基于 AMQP,这是一个开放协议(protocol),允许我使用 .Net、Python、Java 等进行连接,而不是专有驱动程序或尝试将所有内容包装在 JMS 中。绝不是专家,所以也许其他人对您的问题有更好的见解。

祝你好运。

关于c# - 发布/订阅和基于内容的订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11803542/

相关文章:

c# - 如何增加 ASP.NET Core SignalR v2.1 中的超时设置?

c# - 在每一页检查 session ?

c# - 如何在一行中将字符串拆分和修剪成多个部分?

scala - 发布/订阅中的 Redis 插件阻塞

python - wx.lib.pubsub : How to change the value in a timer

c# - SQL CLR : Streaming table valued function results

c# - Jquery/Javascript 访问表行属性

c# - 加载程序集和版本控制

.net - WebJob QueueTrigger 如何触发、轮询或事件?

Google Pub/Sub 消息排序不起作用(或将延迟增加到 10 秒以上)?