0

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

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

一秒钟,我想我可以在该表上定义一个移动服务“插入”脚本,如此处所述,但当然,流分析作业不会通过移动服务 API...

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

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

4

2 回答 2

1

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

/dag

于 2015-06-22T11:37:46.153 回答
0

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

  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
    }
于 2015-06-22T18:00:15.043 回答