【发布时间】:2014-08-14 21:33:28
【问题描述】:
对不起,如果这个问题有点幼稚
我们有大量设备 (> 100,000) 向我们的主机发送事件,我们希望不同的客户应用程序能够接收来自特定设备的事件
一个具体的例子是温度读数,一个客户应用程序可能需要某个地理区域内所有设备的读数,而另一个客户应用程序可能需要安装在特定设备(例如冷藏食品区)中的所有设备的读数,但在许多地理区域 另一个客户应用程序只对他们制造的设备感兴趣 即这些将是重叠的设备“集合”
也许这只是“物联网”(IoT) 的一个例子?
我相信 NSB 中的 pub/sub 方法使用“消息类型”来识别目标订阅 - 但我怀疑这些消息都是同一类型
我相信,假设我自己处理路由,我可以使用 bus.send
但这是使用 NSB 的正确方法吗?
是否有任何文章或文档可以说明这种类型的架构?
注意我们目前有一个使用持久 MSMQ 和“手动”路由解决方案的解决方案(实施不再合适 - 见下文) - 因此存在一些压力来“发展”该解决方案,而不是采用像 NSB 这样更好的解决方案
为什么不再合适? - 很多原因,但主要是实现按类型路由消息(目的是让不同的服务使用不同的类型) 但是我们也允许按“组”(设备的集合)进行路由,这就是目前使用的方式 - 但这是手动配置,现在我们有数千台设备和大量客户应用程序(100+)非常尴尬需要他们自己的设备“组”,但现在也想将他们的一些设备“共享”给其他客户应用程序 它是使用 MSMQ 编写的自定义代码(和 dotnet 1.0 - 这是我们的第一个 dot net 项目! - 所以它做得还不错) 但是当我们想要重写这个时,看看 NSB 是有意义的
我想问题的一部分是我没有找到适合我们正在尝试做的“模式” - 所以更难解释它是什么 但是,鉴于“物联网”的出现 - 我希望这是一个比实际情况更常见的问题?
【问题讨论】:
-
您能否详细说明实施不再适用的原因?这将有助于定义方法。
-
编辑原始帖子以扩展现有解决方案
-
听起来您需要订阅级别的基于内容的路由。有一个
IPublishMessages接口,也许您可以提供一个自定义实现,根据内容删除订阅者。我不是 NServiceBus 专家,所以也许有人可以指出这样的解决方案是否可行/有用。 -
我目前在想,如果我必须自己实现某种形式的基于内容到特定订阅者的路由,那么我可能会改用“点对点”消息传递——我看不出是什么在这种情况下,好处 pub/sub 会给我
标签: nservicebus