RabbitMq按优先级消耗

时间:2016-12-21 13:18:47

标签: php rabbitmq amqp

我想使用来自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 个答案:

答案 0 :(得分:0)

  

现在我怎样才能使用优先级为2的消息

最简单的方法是更改​​路由,以便将“优先级”消息发送到只有这些消息到达的队列。

然后你永远不必担心队列中的其他消息,你的消费者可以专用于这个队列中的任何消息......这恰好只是这个“优先级”的消息