Как отправить полезную нагрузку JSON в RabbitMQ с помощью веб-плагина?

у меня есть экземпляр RabbitMQ 3.4.2 с установленным плагином веб-управления.

когда я нажимаю на в очередь с помощью языка Python комбу пакет очереди, сообщение читается на другом конце как словарь.

однако, когда я отправляю сообщение с помощью веб-консоли:

enter image description here

Я получаю следующую ошибку на приемном конце:

operation_id = payload['operationId']
TypeError: string indices must be integers

Я пробовал добавление content-type заголовок и свойства, без успеха.

поскольку код считывателя одинаков, это означает, что веб-отправитель не помечает отправленное сообщение как полезную нагрузку JSON / dictionary, и поэтому оно читается как строка на другом конце.

есть идеи, как пометить сообщение как сообщение JSON с помощью веб-консоли RabbitMQ?

2 ответов


мне пришлось использовать content_type вместо content-type (подчеркивание вместо дефиса).

Это довольно сомнительное дизайнерское решение, потому что стандарт, который все знают, это content-type.

enter image description here


вам нужно де-сериализовать выход.

import json
payload = json.loads(payload)
operation_id = payload['operationId']

кроме того {'operationId': 194} недопустимый JSON. Хотя похоже, что вы используете двойные кавычки на скриншоте, но убедитесь, что вы замените одинарные кавычки на двойные кавычки.

Edit: Итак, вы правы, комбу должен справиться с этим. Глядя на код, вероятно, что заголовок чувствителен к регистру. Измените заголовок свойства с Content-Type to content-type.