【发布时间】:2025-11-21 08:20:06
【问题描述】:
我正在阅读有关 MassTransit RabbitMQ 中的 Concurrency Limit 的信息,但我仍然不明白它是如何工作的。
假设我有 4 个消费者,我将队列配置为并发限制为 1 config.UseConcurrencyLimit(1);。当生产者同时发送 4 条消息时,会发生什么?只有一个消费者会消费一条消息,而所有其他 3 条消息都将被丢弃?
有人可以解释一下它是如何工作的吗?
【问题讨论】:
-
这将是一个相当蹩脚的 - 更不用说没用了! - 消息队列系统,如果它只是丢弃消息。这是一个并发限制:一次可以“处理”多少条消息。当您达到限制时,其他消息将保留在队列中,直到工作人员释放。
-
虽然 w.r.t. 4 个带有并发限制 1 的消费者 - 您链接的该文档意味着如果并发限制为 1,您将无法创建 4 个消费者。了解更多的人可以回答这个问题(或者您可以进行实验并报告)。
-
所以它也限制了我消费消息的并发消费者数量?那么如果我有 4 个消费者并且并发限制为 1,那么一次只有一个消费者会消费这些消息。一旦一条消息被消费,下一条将被消费并继续。
标签: c# rabbitmq masstransit