【问题标题】:Email Notifications with Stream Analytics带有流分析的电子邮件通知
【发布时间】:2015-06-21 13:51:38
【问题描述】:

我正在寻找一种优雅的方式来发送电子邮件通知,以防流分析作业检测到已超过阈值 - 与 Santosh Balasubramanian 在第 9 频道中显示的大致相同。

超过阈值后,一条记录将写入 SQL 表。这应该会触发发送电子邮件。

有一瞬间,我想我可以在该表 as explained here 上定义一个移动服务“插入”脚本,但当然,流分析作业不会通过移动服务 API...

到目前为止,我能想到的最佳选择是改用 Mobile Services Scheduled Job,它会每隔 5 分钟左右轮询一次表,如果找到新记录则发送电子邮件。

有没有更好的方法?还是应该为流分析添加功能请求以启用移动服务作为输出类型?

【问题讨论】:

    标签: azure azure-mobile-services sendgrid azure-stream-analytics cortana-intelligence


    【解决方案1】:

    我应该通过新的事件中心队列而不是 SQL 表发送您想要为其创建电子邮件的事件来解决它。 (因此流分析作业的输出是一个事件中心队列。)从该队列中,您可以拥有一个创建邮件并发送邮件的事件处理器。我应该使用 SendGrid 发送邮件。

    /dag

    【讨论】:

      【解决方案2】:

      我已经完成的一个可能的实现,它会在检测到异常时向您发送电子邮件,如下所示:

      1. 在流​​分析中,编写一个流查询来检测您想要的异常阈值。
      2. 将流分析的输出发送到没有其他发件人的其他 Azure 事件中心,我们将其称为异常检测事件中心。任何到达此事件中心的消息都将是异常情况。
      3. 编写订阅异常检测中心的事件中心接收器应用程序。然后,可以对该应用进行编程,使其在看到订阅的事件中心中的任何事件时采取行动(例如发送电子邮件)。

      请参阅此文档以了解如何订阅 Azure 事件中心。 https://azure.microsoft.com/en-us/documentation/articles/service-bus-event-hubs-csharp-ephcs-getstarted/

      您需要在上述文档的以下部分发送电子邮件:

      foreach (EventData eventData in messages)
          {
              string data = Encoding.UTF8.GetString(eventData.GetBytes());
      
              Console.WriteLine(string.Format("Message received.  Partition: '{0}', Data: '{1}'",
                  context.Lease.PartitionId, data));
              // SEND EMAIL HERE
          }
      

      【讨论】:

      • 我希望有一个不需要我运行单独的应用程序的解决方案,但我想这不是一个选项 :o] 选择这个答案是因为它的广泛性,两者都可以。
      猜你喜欢
      • 1970-01-01
      • 2019-02-05
      • 2012-12-11
      • 1970-01-01
      • 1970-01-01
      • 2019-10-30
      • 1970-01-01
      • 2018-12-28
      • 2011-12-16
      相关资源
      最近更新 更多