5

我正在构建一个系统以在处理数据后异步发送邮件(处理可能需要 10 秒)。

我最初的想法是让 Windows 服务每 3 秒通过数据处理请求轮询数据库,以便处理第一条记录。完成后,轮询并获取要处理的新的第一条记录。

当没有记录时,等待 3 秒并再次轮询以检查记录。

我不确定这是否是个好主意。在我看来,使用计时器并不是一种很好的编程方式。即使在不需要时,数据库的性能和使用也是一个问题。

在这种情况下,最佳做法是什么?

使用的技术:.net 3.5、SQL Server、服务器在场。

4

2 回答 2

3

这完全取决于您创建了多少开销。

如果您可以有效地轮询数据库(即,使用简单的查询),并且如果这样的轮询不需要大量的网络流量(通常不需要),为什么不每 3 秒轮询一次呢?

你是怎么达到3号的?是任意的还是有理由每 3 秒精确检查一次?

为了使查询简单,您可以使用 2 个查询:一个用于检测是否有新数据,另一个用于实际获取数据。通过这种方式,您可以优化最常发生的那个(显然是第一个)。

于 2012-11-06T12:49:53.340 回答
1

为什么一次只能收到一个请求?

并考虑通知

使用查询通知

于 2012-11-06T12:54:47.647 回答