Azure服务总线 - 多个主题?

问题描述:

所以我现在使用的是什么样的简要总结:Azure服务总线 - 多个主题?

我决定我是否可以做到这一点与1个主题vs需要N个主题,并与相关的元数据/过滤器。

我有3件相当多;套接字服务器(工作者角色),该字段中的单元连接到Azure服务总线消息传递以及最终的Web应用程序。 用户可以通过网络应用程序将要发送给设备的命令进行排队,但我们需要能够在队列中保留消息,直到设备联机为止,然后才能获取所有消息。这是我困惑的地方...

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

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

我是很新的SQLFilters与服务总线所以任何帮助,将不胜感激:)

问得好!首先,我应该说我会在您的情况下使用物联网集线器,这是针对物联网场景,管理和指挥而优化的“队列”式服务。或事件中心,但它们不是优化命令模式。

1)事件集线器

2)的IoT集线器

第一个是对于那些更多的场景事件导向。我的意思是 - 通过事件中心实现对后端设备的管理将变得更加复杂,并且与物联网中心的复杂性降低。

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

从架构角度来看,最近微软发布了物联网参考架构白皮书,您可以在这里下载。它具有可从微软的角度用于Azure +物联网项目的建议,服务和最佳实践等。

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

因此,我建议考虑使用物联网/事件中枢而不是SB主题/队列,因为在IoT字段中,针对这些工作负载优化的服务应该比未优化的服务执行得更好。

其次,你没有指定你如何将你的设备连接到工作者角色,所以我看到有一个好的库可以做到这一点,称为SuperSocket

所以,当我看到你的解决方案体系结构可能看起来像:

设备2云:

设备=>网关(SuperSocket或其他)||的IoT集线器=>设备注册表(参见上文指定的链接)

云2设备:与已注册设备=>设备

用户界面=>的IoT集线器

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

当设备脱机时,它不会轮询队列。消息在停顿之前会有一些保留时间,这是内置机制。

+0

感谢您的快速和彻底的回应:)只要我们的设备可以说MQTT,我们就会100%转移到物联网集线器,因为我们现在只能使用原始TCP套接字。但我真的很喜欢我在SuperSocket上看到的。在我以前的工作中,我设法得到了一个非常好的异步套接字服务器,每天处理20个以上的原始TCP二进制数据。:)因此,我已经成为一个迷你套接字大师哈哈。现在给其余的一个阅读:) – David

+0

啊,好的!这是有道理的,你为什么使用套接字。然后是看看SuperSocket和设备注册表模式。如果您尝试Azure IoT Suite远程监控,您可能会看到它是如何工作的 - 设备具有接口和密钥来访问它们正在注册的IoT Hub,并将接口和命令发送到后端。然后,这些命令将显示在门户网站上,并且用户可以执行将发送到设备的命令。即使你还不能使用物联网集线器,我相信它可能会在套接字上实现。 –

+0

Scratch,现在打电话给固件工程师讨论添加MQTT :)在这个早期阶段,它确实是正确的方向。非常感谢! – David