2018년 4월 4일 수요일

rabbitmq priority queue support in php

https://www.rabbitmq.com/priority.html

rabbitmq 3.7.0
phpamqplib


큐 선언
    $args = new AMQPTable();
    $args->set('x-max-priority', 10);

    $ch->queue_declare($queue, false, true, false, false, false, $args);


메시지 생성
    if ($priority > 1) {
      $args['priority'] = $priority;
    }
    $msg = new AMQPMessage($message, $args);


x-max-priority 속성이 있는 임의의 큐에 10개 메시지를 priority 속성 부여한 상태로 publish 했을 때, consumer가 10개를 받는 순서대로 AMQPMessage의 priority 속성을 확인하면 숫자가 높은 순서대로 전달되는 것을 확인함

큐에 x-max-priority 속성이 없이 선언되었으면 각 메시지에 priority 속성을 부여해도 효과가 없는 것으로 보임