Я определил работника следующим образом:
...
$this->objChannel->basic_consume(
'QueueDeclare',
'orange',
false,
false,
false,
false,
[$this, 'ProcessClientRequest']
);
...
Я установил «оранжевый» в качестве тега потребителя.
Есть другие работники с таким же объявлением «QueueDeclare». +, Но другой потребительtag.
Теперь я пытаюсь отправить задание этому конкретному работнику с «оранжевым» потребительским тегом.
...
$objMessage = new AMQPMessage(
json_encode($arrWork),
[
'delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT,
'consumer_tag' => 'organge',
]
);
...
Проблема в том, что когда я отправляю пару раз, RabbitMQ отправляет работу всем работникамНе только тому, у кого есть обычный потребительский ярлык.
Какова моя ситуация?У меня работает пара рабочих, которые создают большие файлы.Процесс заключается в том, что я отправляю, например, 500 строк как одну задачу, и пока я не закончу с заданием.
Из-за этого процесса для меня важно, чтобы я начинал с задания только одним работникомполучает этот конкретный файл.
Если работник с оранжевым потребительским тегом начинает с file_123, он должен выполнить весь процесс, он должен получить все строки.
Действительно ли потребительский тег создан для того или иногочто-то еще?
Я показал выше только код, который важен для этого объяснения.
Заранее спасибо
ОБНОВЛЕНИЕ 1:
В списке очередей я вижу, что у каждого работника / соединения есть customer_tag, а также в клиентских сообщениях.
ОБНОВЛЕНИЕ 2:
Или, возможно, я могу выбрать определенныйканал, когда есть пара из них с одинаковой очередью?