Я думаю, что вы ищете потребительские приоритеты .
RabbitMQ будет отправлять сообщения потребителям с высоким приоритетом чаще, чем потребителям с низким приоритетом. Единственный раз, когда он получит go для потребителя с низким приоритетом, это когда потребитель с высоким приоритетом заблокирован. Потребитель блокируется при достижении максимального количества неподтвержденных сообщений. Это можно установить, играя с 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);
Если вы строго хотите контролировать распространение сообщений по клиентам, вам может потребоваться написать собственный плагин для изменения поведения потребителей .