Sql server ServiceBroker外部激活器不';t处理队列中的所有消息

Sql server ServiceBroker外部激活器不';t处理队列中的所有消息,sql-server,Sql Server,我已经安装了external activator,它执行一个简单的应用程序(作为启动),它所做的只是运行下面的sql语句 WAITFOR(从[dbo].[DBTriggersQueue]接收top(1)*),超时5000 我在一个表上有一个更新触发器,它将消息添加到队列中 我的问题是,如果我运行多个更新脚本(4个更新一个接一个),它会将消息添加到队列中,我的SBEA会收到事件通知,但是它只会收到1-2个事件通知(根据EATrace日志),因此我的简单应用程序只能处理2条消息 是否有人知道是什么原

我已经安装了external activator,它执行一个简单的应用程序(作为启动),它所做的只是运行下面的sql语句

WAITFOR(从[dbo].[DBTriggersQueue]接收top(1)*),超时5000

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

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

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


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

激活不是每次消息触发。当你被激活时,你应该会收到所有的信息。激活后,继续发出RECEIVE语句并处理消息,直到RECEIVE返回空结果集。阅读更多详细信息。

谢谢Remus,我们会这样做的。当EATrace记录“接收到的事件通知…”时,我感到很困惑,每次我更新时,我都认为这是每条消息。