RabbitMq потребляет по приоритету

Я хочу использовать сообщения из очереди RabbitMq, но только для одного priority, У меня есть объявление приоритета для моей очереди x-max-priority:10и сообщения с приоритетом

Exchange    exchange.fanout
Properties  priority:   10
            content_type:   text/plain

А теперь как я могу принимать сообщения только с приоритетом 2

Я пробовал вот так

$channel->basic_consume(
    'priority-queue',
    '',
    false,
    false,
    false,
    false,
    function ($message) {
        /** @var AMQPMessage $message */
        echo $message->getBody();
        echo "\n";
    },
    null,
    new AMQPTable(
        [
            'x-priority' => 2,
        ]
    )
);

Но я получаю все сообщения, и когда я использую x-priority => ['I', 2] но потом я получаю PRECONDITION_FAILED - invalid arg 'x-priority' for queue 'priority-queue'

1 ответ

А теперь как я могу принимать сообщения только с приоритетом 2

Самый простой способ сделать это - изменить маршрут так, чтобы ваши "приоритетные" сообщения отправлялись в очередь, куда будут поступать только эти сообщения.

тогда вам больше не придется беспокоиться о других сообщениях в очереди, и ваш потребитель может быть выделен для любого сообщения в этой очереди... которое может быть только сообщениями с таким "приоритетом"

Другие вопросы по тегам