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