2016-12-21 3 views
2

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

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'

ответ

0

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

самый простой способ сделать это измените свою маршрутизацию, чтобы ваши «приоритетные» сообщения были отправлены в очередь, куда будут поступать только эти сообщения.

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

+0

Теперь у меня есть такой решение, где у меня есть очереди 'x', и мой обмен решает, куда поместить мое сообщение. Но поскольку есть возможность сохранить все сообщения в одной очереди, я хочу попробовать это решение –

Смежные вопросы