2014-06-23 67 views
1

在NSB中使用Pub/Sub模型時,以下兩種情況看起來會導致死信隊列填滿,最終導致「資源不足」錯誤。nservicebus:事件和死信隊列

1)發佈不具有用戶 2)用戶離線

對於我們的目的,我們不感興趣的歷史事件當用戶啓動,所以輸入隊列被清除在啓動事件類型。然而,當用戶離線時發佈的事件填滿了死信隊列。

我誤解了命令與事件嗎?這是我期望從命令行爲,但預期事件消失,如果不訂閱。

回答

1

當使用NServiceBus,事件被認爲是一樣的命令一樣重要,因此受到關於耐久性,交付同樣保障等

所以,如果你的用戶不關心的事件時,它處於脫機狀態,它可以在關閉之前取消訂閱 - 這樣,您的訂閱者做出的明確決定是,它不關心在不聽到它時會發生什麼情況......只是確保它不會被混淆或以某種方式窒息如果稍後有一些(舊)事件位於其輸入隊列中,則可能會在取消訂閱消息發送併發送到發佈者之間的時間內發佈。

另一種選擇是爲您的事件消息提供[TimeToBeReceived(...)]屬性,但只有在可以安全地確定事件內容在所有訂戶的固定時間後失去其相關性時才應使用該屬性。

+0

感謝您的洞察力。我將同時關閉關閉以及設置TimeToBeReceived。 – user3429570