据我所知,在 rabbitmq 文档中,被查询的消息是以一种 循环往复 时尚的连接消费者。然而,我希望我的一个消费者只接受,比方说1%的信息,以备不时之需。试点 的目的。
有可能实现吗?任何想法都会有帮助。
谅谅
我想你要找的是 消费者优先.
RabbitMQ会比低优先级消费者更频繁地发送消息给高优先级消费者。只有当高优先级消费者被阻止时,才会将消息发送给低优先级消费者。当一个消费者达到最大的未确认消息数量时,它就会被阻止。这可以通过玩 basic.qos
为消费者。
消费者的优先级可以通过以下方式设置。
设置...
x-priority
中的论点basic.consume
方法的一个整数值。未指定值的消费者的优先级为0,数字越大表示优先级越高,正数和负数都可以使用。
因此,您可以为您的测试消费者和其他消费者定义优先级.这里是RabbitMQ文档提供的示例。
Channel channel = ...;
Consumer consumer = ...;
Map<String, Object> args = new HashMap<String, Object>();
args.put("x-priority", 10);
channel.basicConsume("my-queue", false, args, consumer);
如果您想严格控制消息在客户端的分发,您可能需要编写一个自定义插件来修改以下行为 消费者.