0

我有几个不同的应用程序,主要是 ASP.NET Web 应用程序,它们会生成待处理的电子邮件数据库记录。

每分钟,我都会触发一个带有 Windows 任务的可执行文件,以清除待处理的电子邮件缓冲区。

我的目标是将这个一分钟的间隔缩短到一秒。

我打算使用 Windows 服务。

有没有比每秒轮询一次未决电子邮件数据库表更好的方法?

虽然我确信 MSSQL 可以永远处理每秒一次的事务,但对于一天只能发送 80 封电子邮件的应用程序来说,它并不是一个理想的解决方案。

4

2 回答 2

2

SQL Server 已经通过该sp_send_dbmail过程拥有了执行此操作所需的基础结构。在您的代码中,不要填充待处理的电子邮件表,sp_send_dbmail而是调用并让 SQL Server 驱动邮件传递。

sp_send_dbmail依次基于Service Broker Activation。如果您不想使用 DBMail,您可以直接利用激活机制,该机制允许您以非轮询方式监视消息队列。激活后,您将拥有几乎瞬时的延迟(亚秒级),无需每秒轮询更改。

于 2012-08-23T05:35:26.993 回答
1

您的实施是 100% 完美的。您可以使用 windows 服务,也可以使用 windows scheduler 来安排高频作业。

如果你在这里实现缓存。不必要地增加不需要的实现。我建议您保持原样执行,这意味着以 1 秒的频率轮询工作。

于 2012-08-23T03:43:50.827 回答