2013-05-20 56 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

相關問題