Я разрабатываю приложение, которое использует RabbitMq с платформой Micronaut (v1.1.3), цель этого приложения - записать в очередь путь к файлу.Рабочие (RabbitListeners) используют очередь и выполняют определенные операции с указанным файлом.Эти операции могут быть обременительными, и поэтому я не хочу, чтобы очередь немедленно назначала сообщения первому доступному работнику, чтобы избежать перегрузки работника.Я прочитал, что вам нужно установить «prefetch_count», чтобы предотвратить перегрузку работника.Проблема в том, что channel.basicQos (1) полностью игнорируется, и поэтому prefetch_count не задано в очереди.
@Singleton
public class ChannelPoolListener extends ChannelInitializer {
@Override
public void initialize(Channel channel) throws IOException {
channel.basicQos(1);
channel.exchangeDeclare("micronaut", BuiltinExchangeType.DIRECT, true);
channel.queueDeclare("log", true, false, false, null);
channel.queueBind("log", "micronaut", "log");
}
}