并发限制在 MassTransit RabbitMQ 中如何工作?

How does Concurrency Limit work in MassTransit RabbitMQ?

我正在阅读 MassTransit RabbitMQ 中的 Concurrency Limit,但我仍然不明白它是如何工作的。

假设我有 4 个消费者,并且我将队列的并发限制配置为 1 config.UseConcurrencyLimit(1);。当一个生产者同时发送 4 条消息时,会发生什么?只有一个消费者会消费一条消息,而所有其他 3 条消息将被丢弃?

有人可以向我解释一下它是如何工作的吗?

并发限制设置适用于 GreenPipes 中的并发过滤器。它对单个消费管道设置了限制,这是一个单一消费者类型的管道。

它基本上告诉 MassTransit 有多少(竞争)消费者相同类型它可以实例化以处理消息相同类型平行.

正如问题评论中正确提到的那样,队列中没有“丢弃消息”这样的东西。即使您将限制设置为一条并发布 1000 条消息,它们也会被处理,在这种情况下,一条一条。