我有几个不同的应用程序,主要是 ASP.NET Web 应用程序,它们会生成待处理的电子邮件数据库记录。
每分钟,我都会触发一个带有 Windows 任务的可执行文件,以清除待处理的电子邮件缓冲区。
我的目标是将这个一分钟的间隔缩短到一秒。
我打算使用 Windows 服务。
有没有比每秒轮询一次未决电子邮件数据库表更好的方法?
虽然我确信 MSSQL 可以永远处理每秒一次的事务,但对于一天只能发送 80 封电子邮件的应用程序来说,它并不是一个理想的解决方案。
我有几个不同的应用程序,主要是 ASP.NET Web 应用程序,它们会生成待处理的电子邮件数据库记录。
每分钟,我都会触发一个带有 Windows 任务的可执行文件,以清除待处理的电子邮件缓冲区。
我的目标是将这个一分钟的间隔缩短到一秒。
我打算使用 Windows 服务。
有没有比每秒轮询一次未决电子邮件数据库表更好的方法?
虽然我确信 MSSQL 可以永远处理每秒一次的事务,但对于一天只能发送 80 封电子邮件的应用程序来说,它并不是一个理想的解决方案。
SQL Server 已经通过该sp_send_dbmail
过程拥有了执行此操作所需的基础结构。在您的代码中,不要填充待处理的电子邮件表,sp_send_dbmail
而是调用并让 SQL Server 驱动邮件传递。
sp_send_dbmail
依次基于Service Broker Activation。如果您不想使用 DBMail,您可以直接利用激活机制,该机制允许您以非轮询方式监视消息队列。激活后,您将拥有几乎瞬时的延迟(亚秒级),无需每秒轮询更改。
您的实施是 100% 完美的。您可以使用 windows 服务,也可以使用 windows scheduler 来安排高频作业。
如果你在这里实现缓存。不必要地增加不需要的实现。我建议您保持原样执行,这意味着以 1 秒的频率轮询工作。