RabbitMQ: Что означает «прямой» заголовок под «rabbitmqctl list_exchanges»?

Если я создаю обмен в rabbitmq, используя класс php amqp с типом обмена, установленным на direct, и единственным указанным параметром является durable, а затем попытаюсь подключиться к этому обмену в node.js, я получаю Cannot redeclare exchange with different options error вы видите, если у вас нет вариантов, т матч.

Однако, насколько я могу судить, я использую точно такие же параметры (прямой тип и надежный вариант). Поэтому я сделал тест и создал один обмен в php с именем php_exchange и один в node.js с именем node_exchange и запустил rabbitmqctl list_exchanges и получил интересный результат:

Listing exchanges ...
node_exchange   direct
amq.headers headers
amq.direct  direct
amq.match   headers
amq.fanout  fanout
    direct
php_exchange    direct
amq.topic   topic
...done.

Что означает заголовок direct в этом контексте (очевидно, что это не все обмены прямого типа, поскольку он указывает node_exchange как тип прямого)? Как я могу заставить node.js создать идентичный обмен amqp (чтобы он не терпел неудачу при подключении к надежному обмену)?

Я использую библиотеку PECL php amqp и библиотеку node-amqp (https://github.com/ry/node-amqp).

Спасибо.

РЕДАКТИРОВАТЬ:

Вот вывод rabbitmqctl list_exchanges name type auto_delete internal arguments (остальные биржи удалены для краткости):

Listing exchanges ...
node_exchange   direct  false   false   []
php_exchange    direct  false   false   []
...done.

person Marke Hallowell    schedule 09.04.2011    source источник


Ответы (1)


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

Что касается вашей проблемы с PECL и node-amqp, я не использую ни один из них, но, возможно, ваши обмены отличаются чем-то другим, кроме типа или долговечности. «rabbitmqctl list_exchanges name type auto_delete internal arguments» добавит дополнительные столбцы в возвращаемую таблицу, чтобы показать все детали ваших обменов. Или посмотрите на плагин управления.

person Simon MacMullen    schedule 09.04.2011
comment
Спасибо, что ответили на мой вопрос. Я отредактировал оригинал, чтобы включить упомянутую вами команду. Существуют ли другие возможные различия, на которые укажет плагин управления? Благодарю. - person Marke Hallowell; 10.04.2011