0

我已经设置了外部激活器,它执行一个简单的应用程序(作为启动),它所做的只是运行以下 sql 语句

WAITFOR(receive top(1) * from [dbo].[DBTriggersQueue]), TIMEOUT 5000;

我在表上有一个更新触发器,它将消息添加到队列中。

我的问题是,如果我运行多个更新脚本(4 个一个接一个更新),它会将消息添加到队列中并且我的 SBEA 会收到事件通知,但是它只收到 1-2 个事件通知(根据 EATrace 日志),因此只有我的简单应用程序处理了 2 条消息。

有谁知道在最初的 1/2 之后可能导致 SBEA 发送或接收通知的原因是什么?

这似乎与时间有关,因为如果我以几秒钟的延迟运行每个更新脚本,那么每次更新都会发送事件通知并处理消息。

4

1 回答 1

1

激活不是每个消息的触发器。当您被激活时,您应该收到所有消息。一旦激活,继续发出 RECEIVE 语句并处理消息,直到 RECEIVE 返回一个空的结果集。阅读了解激活发生时间的更多详细信息。

于 2013-05-20T11:21:01.193 回答