rabbitMq忽略Channel.basicQos()

rabbitMq忽略Channel.basicQos(),rabbitmq,micronaut,Rabbitmq,Micronaut,我正在开发一个使用RabbitMq和Micronaut(v1.1.3)框架的应用程序,该应用程序的目标是在队列中写入文件的路径。工作者(RabbitListeners)使用队列并对指定的文件执行某些操作。这些操作可能很繁重,因此我不希望队列立即将消息分配给第一个可用的工作进程,以避免工作进程过载。我已经读到,您需要设置“预回迁计数”以防止工作线程过载。 问题是channel.basicQos(1)被完全忽略,因此队列中未设置预取计数 @Singleton public class Channel

我正在开发一个使用RabbitMq和Micronaut(v1.1.3)框架的应用程序,该应用程序的目标是在队列中写入文件的路径。工作者(RabbitListeners)使用队列并对指定的文件执行某些操作。这些操作可能很繁重,因此我不希望队列立即将消息分配给第一个可用的工作进程,以避免工作进程过载。我已经读到,您需要设置“预回迁计数”以防止工作线程过载。 问题是channel.basicQos(1)被完全忽略,因此队列中未设置预取计数

@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");
    }
}

在初始值设定项中传递的通道不能保证在该范围之外使用。您需要在
队列
注释中设置预取。请参见您使用的micronaut的哪个版本?