如何创建一个队列来处理延迟的物联网数据?



我的规则链分析是基于状态的,这意味着计算取决于前一个数据的值。

假设设备每秒生成数据,那么在5秒内,从t=0到t=4 (t=0, t=1, t=2, t=3, t=4)有5个数据。在理想的情况下,首先,设备将发送t=0数据,然后Thingsboard将接收它。接下来,设备将发送t=1数据,然后Thingsboard将接收它。接下来,设备将发送t=2数据,然后Thingsboard将接收它。因此,Thingsboard将根据t值按时间顺序接收数据。

但是由于网络问题,我遇到了一个问题。假设Thingsboard现在获得了t=3数据,但由于网络问题,t=1数据正好在t=3数据之后到达。t=1应该在t=3之前发送和接收数据,但这可能是由于网络连接丢失而发生的。因此,进入Thingsboard规则链的数据顺序被打破了。

所以我认为我需要实现一个队列来收集所有的数据,并在发布到Thingsboard之前根据时间戳对其进行排序。假设设备时间戳和服务器时间戳之间的最大延迟为15分钟。所以在发布到thingsboard之前,我需要先创建一个15分钟的队列。

但是我怎么实现这个队列呢?或者我的想法不是最好的解决方案?

看一下temporary .io。它将允许每个设备有一个单独的工作流,并根据您的业务逻辑执行重新排序。请看这个答案,它给出了一个关于这种解决方案结构的基本概念。

免责声明:我是Temporal项目的技术主管。

相关内容

  • 没有找到相关文章