我在SQL Server 2014上有两个数据库,SourceDB
和LogDB
。在SourceDB上,Service Broker
;在服务器上,Service Broker External Activator
服务已激活。
在SourceDB上我有TargetQueue,其中一个表的(Product)插入触发器在TargetQueue上发送更改,而TargetQueue具有事件通知,它会轻推我的外部exe客户端。在exe客户端内部,我最终通过WAITFOR(RECEIVE TOP (1))..
将数据出列,并将它们直接记录到LogDB。
因此,当我启动SBEA服务并在第一次插入表a /几条记录(删除所有记录之后)后,TargetQueue立即填充,但从插入到SourceDB到插入LogDB的时间间隔约为 3-6秒,基于事件通知的时间消耗在这里我猜,不确定。对于此后的进一步插入,间隔变为 100ms ,如下所示。
第一
另外
答案 0 :(得分:1)
您可以通过放弃外部激活器和事件通知来简化流程。而是让你的程序连续运行WAITFOR(在循环中直接在目标队列上接收。
以下是一个让您入门的示例:https://code.msdn.microsoft.com/Service-Broker-Message-e81c4316