проблема с приоритетом очереди на RabbitMqBundle - PullRequest
0 голосов
/ 12 января 2019

Я пытаюсь настроить приоритетную очередь. Без приоритета все работает нормально, но мне нужно расставить приоритеты для сообщений.

Я использую RabbitMqBundle 1.14 и rabbitmq-supervisor-bundle 3.1 с RabbitMQ 3.5.7 (Erlang 18.3)

Вот файл config.yml:

old_sound_rabbit_mq:
    connections:
        default:
            host:     '127.0.0.1'
            port:     5672
            user:     'xxx'
            password: 'xxx'
            vhost:    '/'
            lazy:     false
            connection_timeout: 3
            read_write_timeout: 3

            # requires php-amqplib v2.4.1+ and PHP5.4+
            keepalive: false

            # requires php-amqplib v2.4.1+
            heartbeat: 0

            #requires php_sockets.dll
            use_socket: true # default false
    producers:
        global:
            connection:       default
            exchange_options: {name: 'global', type: direct}
            queue_options:
                name: global
    consumers:
        global:
            connection:       default
            exchange_options: {name: 'global', type: direct}
            queue_options:    {name: 'global', arguments: {'x-max-priority': ['I', 10]} }
            callback:         rabbitmq_simu_service

И сообщение отправлено в очередь:

$msg = array();
$msg['id'] = $id;
$msg['action'] = 'simu';
$additionalProperties = ['priority' => 4] ;  
$routing_key = '';
$this->container->get('old_sound_rabbit_mq.global_producer')->publish(serialize($msg), $routing_key , $additionalProperties);

При отправке сообщения я получаю следующую ошибку:

PRECONDITION_FAILED - неэквивалентный аргумент 'x-max-priority' для очереди 'global' в vhost '/': не получен, но текущим является значение '10' типа 'signatureint'

Я тоже пробовал в config.yml:

            queue_options:    {name: 'global', arguments: {'x-max-priority': 10} }

В этом случае я не получил ошибку, но сообщения не используются.

Кто-нибудь знает, как отправить приоритетное сообщение?

Ответы [ 2 ]

0 голосов
/ 14 января 2019

PRECONDITION_FAILED - неэквивалентный аргумент 'x-max-priority' для очереди 'global' в vhost '/': не получен, но текущим является значение '10' типа 'signatureint'

Это сообщение означает, что вы уже создали очередь global с максимальным приоритетом 10, но что-то еще пытается объявить ее без приоритета. Вы должны проверить свой код как для своего производителя , так и потребителя, чтобы убедиться, что, если они объявят эту очередь приоритетов, они используют точно такой же аргумент x-max-priority.


ПРИМЕЧАНИЕ: команда RabbitMQ отслеживает rabbitmq-users список рассылки и только иногда отвечает на вопросы по StackOverflow.

0 голосов
/ 14 января 2019

Полученное вами сообщение является сообщением об ошибке того, что происходит, когда вы пытаетесь создать очередь, но очередь уже существует с другими параметрами. Сначала вы должны удалить очередь, а затем попробовать запустить программу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...