c# - Azure 服务总线 - 多个主题?

标签 c# azure azureservicebus servicebus azure-servicebus-topics

简单总结一下我目前正在做的事情:

我正在决定是否可以使用 1 个主题来完成此操作,还是需要 N 个主题,并且都使用相关的元数据/过滤器。

我差不多有3件了;现场设备连接到的套接字服务器(辅助角色)、Azure 服务总线消息传递以及最后的 Web 应用程序。 用户可以通过网络应用程序对要发送到设备的命令进行排队,但我们需要能够将消息保存在队列中,直到设备上线,然后它将获取所有消息。这就是我困惑的地方......

我最初是在 Web 应用程序上对排队的消息动态创建 1-9999 个主题(可以创建 10 000 个主题的限制,因此使用序列的最后 4 个字符)。然后,设备将在元数据中完整序列化。这样,当设备连接到套接字服务器时,我可以创建具有特定规则的 N 个订阅,并在设备断开连接时将其关闭。

但现在我想知道是否可以只有 1 个主题并将所有逻辑放在元数据中?

我对带有服务总线的 SQLFilters 非常陌生,因此我们将不胜感激:)

最佳答案

好问题!首先,我应该说,在您的情况下,我会使用 IoT 中心,这是针对 IoT 场景进行优化的类似“队列”的服务,包括管理和命令。或事件中心,但它们对命令模式的优化较少。

1) 事件中心

2) 物联网中心

第一个适用于更面向事件的场景。我的意思是 - 使用事件中心从后端实现设备管理会更复杂,而使用 IoT 中心则不太复杂。

我强烈建议您查看这些服务,因为服务总线是一项很棒的服务,但列出的服务更面向物联网。

从架构的角度来看,微软最近发布了物联网引用架构白皮书,您可以在此处下载。它包含从 Microsoft 角度来看可用于 Azure + IoT 项目的建议、服务、最佳实践等。

另一个有用的资源可能是 http://azureiotsuite.com 。它是实现的引用物联网架构。因此,如果单击“创建”,您的 Azure 订阅中将拥有两个引用架构(远程监控或预测维护)之一,并且您将能够查看所有流程。

因此,我建议考虑使用 IoT/事件中心而不是 SB 主题/队列,因为在 IoT 领域,针对这些工作负载优化的服务应该比最初未优化的服务表现更好。

其次,您没有指定如何将设备连接到辅助角色,所以正如我所看到的,有一个很好的库可以执行此操作,名为 SuperSocket .

所以,据我所知,您的解决方案架构可能如下所示:

设备 2 云:

设备 => 网关(SuperSocket 或其他)|| IoT 中心 => 设备注册表(请参阅上面指定的链接)

Cloud 2 设备:

用户界面 => 已注册设备的 IoT 中心 => 设备

设备注册表是比传输 ID 等更方便的 IoT 流方式。动态创建实体有一些缺点 - 例如,想象一下,如果创建命令将返回超时错误。我相信最好使用优化的服务。

当设备离线时,不会轮询队列。消息在停止之前有一定的保留时间,这是内置机制。

关于c# - Azure 服务总线 - 多个主题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37275313/

相关文章:

c# - Microsoft Azure 服务总线队列作为 FIFO 工作

visual-studio - 即使配置了 API 连接,Azure 逻辑应用程序的部署也需要服务总线连接字符串

Azure WebJobs ServiceBus 返回异常 : found 2 DNS claims in authorization context

c# - 在它的 "taking a screenshot"之前等待 UI 重绘

Azure CLI 如何更改订阅默认值

ios - 将消息从 Azure 应用程序推送到 MonoTouch (iPhone) 应用程序,无需 Apple 推送通知

azure - 从查询填充 Azure 数据工厂数据集

c# - 如何从 javascript 访问数组列表、字符串数组或列表?

c# - MongoDB GetCollection 方法是否将整个集合加载到 RAM 或引用中? C#

c# - AudioGraph可以播放流吗?