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