RabbitMQ: достижение огромного количества потребителей или близких к одному потребителю для каждого сообщения в очереди? - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть несколько сообщений в очереди, и их обработка очень длинная / тяжелая.Я думал, что решением такого рода узкого места было бы увеличение количества потребителей, удаляющих сообщение из очереди.

Не ясно, как можно достичь огромного количества потребителей (или 1 потребитель на одно сообщение).) в очереди.Но моя попытка заключается в следующем.

Я создал SimpleRabbitListenerContainerFactory с большим количеством потребителей, как показано ниже.

@Bean
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory() {
    SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
    factory.setConnectionFactory(connectionFactory());
    factory.setConcurrentConsumers(50);
    factory.setMaxConcurrentConsumers(200);
    factory.setStartConsumeMinInterval(1l);
    return factory;
}

Я не могу знать, сколько сообщений будет наочередь, и я не хочу размещать слишком много авансом.Я хочу использовать алгоритм масштабирования потребителя для очень быстрого масштабирования.Насколько я понимаю, я могу гораздо быстрее масштабироваться, если уменьшу ConsumeMinInterval.Можно ли идти даже быстрее, чем ConsumeMinInterval, установленный в 1?

Ответ, включающий влияние большого количества неработающих потребителей, был бы высоко оценен.Кроме того, было бы интересно упомянуть о любых мерах предосторожности или ограничениях, которые следует учитывать при увеличении числа потребителей, и, конечно же, их нельзя увеличить слишком много, даже если ситуация выиграет от наличия многих из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...