2013-05-20 30 views
0

我已经安装外部激活剂,它执行一个简单的应用程序(如启动)的所有邮件和所有它运行下面的SQL语句Service Broker的外部激活不涉及队列

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

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

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

有没有人知道什么可能导致SBEA在初始1/2后发送或接收通知?

看起来好像是时间问题,因为如果我运行每个更新脚本时都会有很少的第二个延迟,那么会根据更新和消息处理事件通知。

回答

1

激活不是按消息触发的。当你被激活时,你应该收到所有消息。一旦激活,就会发出RECEIVE语句并处理消息,直到RECEIVE返回一个空的结果集。阅读更多详情,请致电Understanding When Activation Occurs

+0

感谢Remus,会这样做。当EATrace记录“收到的事件通知...”时,我感到困惑,每次我做了更新,因此认为它是每条消息。 – user2401395

相关问题