#php #javascript #node.js #rabbitmq #amqp
#php #javascript #node.js #rabbitmq #amqp
Вопрос:
Если я создаю exchange в rabbitmq, используя класс amqp php с типом exchange, установленным в direct
, и единственным указанным параметром является durable
, то попробуйте подключиться к этому exchange в 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 )
Спасибо.
Редактировать:
Вот результат rabbitmqctl list_exchanges name type auto_delete internal arguments
(другие обмены удалены для краткости):
Listing exchanges ...
node_exchange direct false false []
php_exchange direct false false []
...done.
Ответ №1:
Это не заголовок — это следствие слегка запутанного аспекта AMQP, который заключается в том, что существует прямой обмен, называемый «». Это обмен по «умолчанию», к которому автоматически привязываются все очереди.
Что касается вашей проблемы с PECL против node-amqp, я не использую ни то, ни другое, но, возможно, ваши обмены отличаются чем-то другим, кроме типа или долговечности. «rabbitmqctl list_exchanges name type auto_delete internal arguments» добавит больше столбцов в возвращаемую таблицу, чтобы показать все детали ваших обменов. Или посмотрите на плагин управления.
Комментарии:
1. Спасибо, что ответили на мой вопрос. Я отредактировал оригинал, чтобы включить упомянутую вами команду. Существуют ли другие возможные различия, на которые указал бы плагин управления? Спасибо.