我目前正在调查Rebus,但由于无法找到好的文档,这个过程很难证明。我希望有人能帮助我理解这个令人兴奋的产品。
I have read在邮件处理过程中,如果出现问题,邮件将返回队列。
谢谢
答案 0 :(得分:3)
1)回滚队列事务,有效地将消息移回前面 - 因此,它将立即重试。
尝试失败5次后(至少是默认值),Rebus会将消息移至错误队列。默认的重试机制是故意非常快速的 - 这样,输入队列永远不会被有毒消息阻塞。
如果您需要更复杂的重试,我建议您查看bus.Defer
- 它可以推迟向未来发送消息。它要求您运行超时管理器(*)。
2)我猜这就是我所说的"错误队列",除非没有重试:)
我确实创建了一个解决方案,但是,我编写了一个简单的端点,它会定期清空错误队列并将所有消息移回原始源队列,作为原始自动二级重试机制的一种形式。
3)否.NServiceBus具有second-level retries的概念,但这是我从未真正需要(足够)Rebus的东西。但是对于Rebus来说,你自己就在这里 - 做一些聪明的bus.Defer
应该很容易,然后可以很容易地适应你期望的每种错误。
4)见(3)
我希望澄清一点:)
(*)超时管理器可以是一个单独的端点,其生命中唯一的工作是接收消息,保持一段时间(即将其保存到数据库中),然后将其返回给发送方时间过去了。但是,超时管理器可以在进程中托管,但使用.Timeouts(t => t.???)
配置法术。