Как отправить полезную нагрузку JSON в RabbitMQ с помощью веб-плагина?
у меня есть экземпляр RabbitMQ 3.4.2 с установленным плагином веб-управления.
когда я нажимаю на в очередь с помощью языка Python комбу пакет очереди, сообщение читается на другом конце как словарь.
однако, когда я отправляю сообщение с помощью веб-консоли:
Я получаю следующую ошибку на приемном конце:
operation_id = payload['operationId']
TypeError: string indices must be integers
Я пробовал добавление content-type
заголовок и свойства, без успеха.
поскольку код считывателя одинаков, это означает, что веб-отправитель не помечает отправленное сообщение как полезную нагрузку JSON / dictionary, и поэтому оно читается как строка на другом конце.
есть идеи, как пометить сообщение как сообщение JSON с помощью веб-консоли RabbitMQ?
2 ответов
мне пришлось использовать content_type
вместо content-type
(подчеркивание вместо дефиса).
Это довольно сомнительное дизайнерское решение, потому что стандарт, который все знают, это content-type
.
вам нужно де-сериализовать выход.
import json
payload = json.loads(payload)
operation_id = payload['operationId']
кроме того {'operationId': 194}
недопустимый JSON. Хотя похоже, что вы используете двойные кавычки на скриншоте, но убедитесь, что вы замените одинарные кавычки на двойные кавычки.
Edit:
Итак, вы правы, комбу должен справиться с этим. Глядя на код, вероятно, что заголовок чувствителен к регистру. Измените заголовок свойства с Content-Type
to content-type
.