nservicebus:事件和死信队列

时间:2014-06-23 08:31:56

标签: events msmq nservicebus dead-letter

将Pub / Sub模型与NSB一起使用,以下两种情况似乎会导致死信队列填满,最终导致资源不足"错误。

1)发布没有订阅者的事件类型 2)订阅者离线

出于我们的目的,当订阅者启动时,我们对历史事件不感兴趣,因此在启动时清除传入队列。但是,订阅者离线时发布的事件会填满死信队列。

我误解了命令与事件的关系吗?这是我期望从Commands中获得的行为,但是如果没有订阅,预期事件就会消失。

1 个答案:

答案 0 :(得分:1)

使用NServiceBus时,事件被视为与命令一样重要,因此在耐用性,交付等方面也有相同的保证。

因此,如果您的订阅者在离线时不关心事件,则可以在关闭之前取消订阅 - 这样,您的订阅者明确决定它不关心当它发生时会发生什么#39;不能听到它...只是确保它不会被混淆或者以某种方式窒息,如果稍后在线返回时,其输入队列中有少量(旧)事件,因为东西可能会在取消订阅邮件发送到发布者之间的时间内发布。

另一种选择是在您的事件消息上提供[TimeToBeReceived(...)]属性,但只有在可以安全地确定事件内容在所有订阅者的固定时间后失去其相关性时才应使用该属性。