У меня есть несколько сообщений в очереди, и их обработка очень длинная / тяжелая.Я думал, что решением такого рода узкого места было бы увеличение количества потребителей, удаляющих сообщение из очереди.
Не ясно, как можно достичь огромного количества потребителей (или 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?
Ответ, включающий влияние большого количества неработающих потребителей, был бы высоко оценен.Кроме того, было бы интересно упомянуть о любых мерах предосторожности или ограничениях, которые следует учитывать при увеличении числа потребителей, и, конечно же, их нельзя увеличить слишком много, даже если ситуация выиграет от наличия многих из них.