Примечание: на ваш вопрос уже дан ответ здесь : ссылка
RabbitMQ поддерживает публикацию только на биржах.Это основная функция продукта.Затем RabbitMQ использует привязки, чтобы выяснить, какие очереди должны получать сообщение.
Вы можете прочитать об этих понятиях здесь .
Когда вы используете "Опубликовать сообщение""в консоли администрирования используется привязка по умолчанию и обмен по умолчанию.С этого документа :
Обмен по умолчанию
В предыдущих частях учебника мы ничего не знали об обменах, но все же были в состоянии отправлять сообщения в очереди.Это стало возможным, потому что мы использовали обмен по умолчанию, который мы идентифицируем пустой строкой ("").
Вспомните, как мы публиковали сообщение раньше:
channel.basic_publish(exchange='',
routing_key='hello',
body=message)
Параметр обменаНазвание биржи.Пустая строка обозначает обмен по умолчанию или безымянный обмен: сообщения направляются в очередь с именем, указанным параметром routing_key, если он существует.
Итак, для появляются для публикациинепосредственно в очередь интерфейс управления публикует сообщение для обмена по умолчанию (с именем amq.default
или пустой строкой ""
), используя имя очереди в качестве ключа маршрутизации.Вы можете убедиться в этом сами, включив инструменты разработчика в своем браузере и наблюдая за HTTP-вызовом, сделанным на /api/exchanges/vhost/name/publish
при публикации сообщения в очереди.
В вашем случае запрос будет выглядеть примерно так(используйте Chrome, щелкните правой кнопкой мыши запрос publish
и «копировать как cUrl»):
curl -4vvv -u guest:guest \
'localhost:15672/api/exchanges/%2F/amq.default/publish' \
-H 'Content-Type: text/plain;charset=UTF-8' \
--data-binary '{"vhost":"/","name":"amq.default","properties":{"delivery_mode":1,"headers":{}},"routing_key":"MY-QUEUE-NAME","delivery_mode":"1","payload":"TEST","headers":{},"props":{},"payload_encoding":"string"}'
ПРИМЕЧАНИЕ: команда RabbitMQ контролирует список рассылки rabbitmq-users
и только иногда отвечает на вопросы в StackOverflow.