带有流分析的电子邮件通知

Posted

技术标签:

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

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

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

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

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

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

【问题讨论】:

【参考方案1】:

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

/dag

【讨论】:

【参考方案2】:

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

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

请参阅此文档以了解如何订阅 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] 选择这个答案是因为它的广泛性,两者都可以。

以上是关于带有流分析的电子邮件通知的主要内容,如果未能解决你的问题,请参考以下文章

zabbix实现QQ邮件报警通知(最详细)--技术流ken

分析错误日志,发送邮件通知

EWS 邮件提醒

分布式系统监视zabbix讲解二之邮件报警通知--技术流ken

JavaMail读取收件箱退信邮件/分析邮件附件获取Message_Id

发送后显示带有降价的 Laravel 通知(MailMessage)