Публикация в очередь RabbitMQ с HTTP API - PullRequest
0 голосов
/ 17 ноября 2018

изучаю документацию (https://cdn.rawgit.com/rabbitmq/rabbitmq-management/v3.7.9/priv/www/api/index.html)

И не нашли способ опубликовать сообщение в очередь (не обмен, очередь) с HTTP API?

Это возможно?

Сколько бы это не имело никакого смысла в производственном мышлении, оно все же может быть полезно для целей тестирования.

Я в основном хочу имитировать интерфейс «Опубликовать сообщение», доступный в административной консоли RabbitMQ.

Возможно ли это как-нибудь?

1 Ответ

0 голосов
/ 17 ноября 2018

Примечание: на ваш вопрос уже дан ответ здесь : ссылка

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.

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