azure - 实现 Azure 流分析通知/警报服务的正确方法

标签 azure azure-stream-analytics

我正在使用传感器系统,其中每个传感器每 15 秒发送一个新读数。

每种传感器类型还定义了规则,触发时将生成警报输出 - 例如“温度”类型的传感器发送的值高于允许的最高温度。

假设 ID 为“XXX_01”的传感器在 30 秒内发送 2 个读数,每个读数的值均高于允许的最大值。

Event in: 01/10/2018 12:00:00
{ id:"XXX_01", value: 90, "temperature" } 

Event in: 01/10/2018 12:15:00
{ id:"XXX_01", value: 95, "temperature" }

现在,我想通知最终用户有警报 - 我必须向最终用户发送某种通知。问题和困惑是我不想发送两次警报。

假设我使用 Twilio 之类的工具发送短信或仅发送电子邮件通知,假设传入的传感器读数保持在允许的最大值以上,我不想每 15 秒向最终用户发送一次新通知。

我可以使用什么样的 Azure 服务、架构或设计范例来避免此类问题?

最佳答案

不得不说A(不想给用户垃圾通知)和B(一碰到MAX线就报警高温)有些矛盾。实现起来很困难。

在我看来,你可以以固定的频率向用户发送通知。

1.在该频率周期内,例如 1 分钟,使用 Azure 流分析服务每 15 秒接收一次传感器数据。

2.然后将数据输出到Azure存储队列。

3.然后使用Azure Queue Time Trigger获取 Azure Storage Queue 中的最新温度值每 1 分钟更新一次当前消息。如果触及 MAX 线,则向最终用户发送通知。如果你想通知用户它触及了MAX线,无论它是否已经掉落,那么只需按值对消息进行排序并判断即可。

4.最后,清空队列。

关于azure - 实现 Azure 流分析通知/警报服务的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52598030/

相关文章:

scala - 数据未加载到 Scala 中的表中

azure - 如何在azure虚拟机中将公共(public)端口映射到私有(private)端口?

c# - 自定义角色存储 asp.net

azure - AI(内部): Reached message limit. EventSource 错误消息结束

azure - 流分析条件检查

azure - 在 Azure Analytics 作业中设置日期时间格式

azure - 如何从单个 JSON (IOT HUB) 将流分析输出分成多行

azure - 在 Cosmos Db 中查询文档进行日期比较时如何截断时间

azure - 使用流分析将数据从 IoT 中心传输到 Cosmos DB 会出现分区错误

azure - Azure 流分析中的限制事件