流分析的电子邮件通知

Email Notifications with Stream Analytics

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

通过阈值后,记录将写入 SQL table。这应该触发发送电子邮件。

有那么一瞬间,我想我可以在那个 table as explained here 上定义一个移动服务 'insert' 脚本,但是当然,流分析作业不会通过移动服务 API...

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

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

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

/达格

我已经完成的一种可能的实现方式如下:

  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
    }