RabbitMQ: Что означает «прямой» заголовок в «rabbitmqctl list_exchanges»? - PullRequest
1 голос
/ 09 апреля 2011

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

Однако, насколько я могу судить, я использую те же самые опции (тип direct и опция durable). Итак, я сделал тест и создал один обмен в 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 в этом контексте (очевидно, это не все обмены типа direct, так как в нем перечисляется node_exchange как тип direct)? Как я могу получить node.js для создания идентичного обмена amqp (чтобы он не потерпел неудачу при подключении к долговременному обмену)?

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

Спасибо.

EDIT:

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

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

1 Ответ

1 голос
/ 10 апреля 2011

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

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

...