1

我有一个用 C# 编写并使用 SQL Server 的 Web 项目。我需要编写一个电子邮件通知系统。我做了一些研究,有些人建议使用 CLR,有些人建议使用 C# 代码中的业务逻辑。我以前没有做过这个系统,我想知道其他人是怎么做的。

我的想法是创建一个Queue表,并为我要监视更改的表创建触发器。当触发器被执行时,它将向Queue表中插入一个电子邮件请求。稍后,我将循环该队列表并发送电子邮件。我可能会在不久的将来使用亚马逊网络服务发送电子邮件,但还没有决定。

你认为这是个好主意吗?

4

1 回答 1

3

这是一个好主意,但是你看看已经存在的东西,开箱即用?sp_send_dbmail做的差不多。它将邮件请求放入队列中,并使用外部应用程序执行 SMTP 工作。我认为如果您必须使用 Amazon SNS,那么内置的数据库邮件将不起作用。

不要听取建议直接从触发器发送电子邮件的建议(例如,使用 SQLCLR)。除了明显的性能损失(表上的每个 DML 操作现在都必须等待 SMTP 或 HTTP 操作的巨大延迟)之外,您还有更大的事务一致性问题,您如何回忆回滚时的电子邮件?所以是的,使用中间队列是强制性的。还可以查看Using Tables as Queues

于 2013-04-09T12:03:35.083 回答