MassTransit 的重试行为会阻止使用其他消息吗?
Does MassTransit's retry brehavior block consuming other messages?
假设 MassTransit 配置了并发 1
和 对失败消息的重试策略为 1 小时
和 队列以 2 条消息开始
and 消费第一条消息失败:
地铁有吗
1) 等待一个小时,然后再次尝试第一条消息,而第二条消息保持排队
或
2) 等待一个小时后再尝试第一条消息,同时继续尝试第二条消息?
简单答案:1.
有两种方法可以使用 MassTransit 重试。
.UseMessageRetry(r => r.???);
这是在内存中并保持消息锁定。这也是一个活跃的消息消耗,所以如果使用预取计数或并发限制,它将继续计入该限制。
.UseScheduledRedelivery(r => r.???);
这会使用调度程序(可能由代理支持或通过 Quartz.NET 支持)重新安排消息传递。它不会阻止后续消息并将消息排入队列以供将来传递。
两者都有记录 here。
假设 MassTransit 配置了并发 1
和 对失败消息的重试策略为 1 小时
和 队列以 2 条消息开始
and 消费第一条消息失败:
地铁有吗
1) 等待一个小时,然后再次尝试第一条消息,而第二条消息保持排队
或
2) 等待一个小时后再尝试第一条消息,同时继续尝试第二条消息?
简单答案:1.
有两种方法可以使用 MassTransit 重试。
.UseMessageRetry(r => r.???);
这是在内存中并保持消息锁定。这也是一个活跃的消息消耗,所以如果使用预取计数或并发限制,它将继续计入该限制。
.UseScheduledRedelivery(r => r.???);
这会使用调度程序(可能由代理支持或通过 Quartz.NET 支持)重新安排消息传递。它不会阻止后续消息并将消息排入队列以供将来传递。
两者都有记录 here。