Как мне установить prefetchCount
для этого потребителя очереди?
@Bean
public Queue eventQueue(AmqpAdmin amqpAdmin) {
Queue queue = QueueBuilder.durable(EVENT_QUEUE_NAME)
...
.build();
TopicExchange topicExchange = new TopicExchange(TOPIC_EXCHANGE, true, false);
amqpAdmin.declareBinding(BindingBuilder
.bind(queue)
.to(topicExchange)
.with(EVENT_ROUTING_KEY));
return queue;
}
В документации отмечается, что prefetchCount
это конфигурация контейнера, но установка ее на моем factory bean не работал, и значение по умолчанию было 250
:
@Bean
public SimpleRabbitListenerContainerFactory containerFactory(ConnectionFactory connectionFactory) {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setPrefetchCount(10); // doesn't work; defaults to 250
return factory;
}
UPDATE
Согласно комментарию @ GaryRussell ниже, я тестировал значение по умолчанию rabbitListenerContainerFactory
а также подтвердил, что моя конфигурация Spring Boot spring.rabbitmq.listener.simple.prefetch
использовалась в AbstractRabbitListenerContainerFactoryConfigurer
. Однако, когда я смотрю на потребителей очереди в RabbitMQ, я вижу, что очереди, которые я определяю с помощью настройки контейнера по умолчанию, по-прежнему имеют prefetchCount
250:
Я использую админку RabbitMQ как источник истины. Я не думаю, что это ложь, потому что у меня есть куча динамических c очередей, экземпляры которых создаются с помощью настраиваемых контейнеров, и у них действительно есть нестандартные (правильные) prefetchCount
s. Я также проверил при запуске контейнера Spring, что существует только один (ожидаемый) компонент rabbitListenerContainerFactory
.