我正在使用传感器系统,其中每个传感器每 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/