我设置了外部激活器,它执行一个简单的应用程序(作为启动),它所做的一切就是运行以下sql语句
WAITFOR(receive top(1) * from [dbo].[DBTriggersQueue]), TIMEOUT 5000;
我在一个表上有一个update触发器,它将消息添加到队列。
我的问题是,如果我运行几个更新脚本(一个接一个地更新4个),它会将消息添加到队列中,我的SBEA会接收事件通知,但它只接收1-2个事件通知(根据EATrace日志),因此我的简单应用程序只处理2个消息。
有人知道是什么原因导致SBEA在最初的1/2之后发送或接收通知吗?
这似乎与时间有关,因为如果我运行我的每个更新脚本几乎没有延迟,那么每次更新都会发送事件通知并处理消息。
发布于 2013-05-20 19:21:01
激活不是每条消息的触发器。当你被激活时,你应该会收到所有的消息。一旦激活,继续发出RECEIVE语句并处理消息,直到RECEIVE返回一个空的结果集。欲了解更多详情,请访问Understanding When Activation Occurs。
https://stackoverflow.com/questions/16648240
复制相似问题