RabbitMQ 3.4.2インスタンス にWeb管理プラグインがインストールされています。
Pythonの komb キューパッケージを使用して、メッセージ{'operationId': 194}
をキューにプッシュすると、メッセージは反対側で辞書として読み込まれます。
ただし、Webコンソールを使用してメッセージを送信すると、次のようになります。
受信側で次のエラーが発生します。
operation_id = payload['operationId']
TypeError: string indices must be integers
content-type
ヘッダーとプロパティを追加しようとしましたが、成功しませんでした。
リーダーコードは同じであるため、Web送信者は送信されたメッセージをJSON /辞書のペイロードとしてマークしないため、相手側では文字列として読み取られます。
RabbitMQ Webコンソールを使用してメッセージをJSONメッセージとしてマークする方法はありますか?
content_type
ではなくcontent-type
を使用する必要がありました(ハイフンではなくアンダースコア)。
誰もが知っている標準は content-type
であるため、これはかなり疑わしい設計決定です。
出力を逆シリアル化する必要があります。
import json
payload = json.loads(payload)
operation_id = payload['operationId']
また、{'operationId': 194}
は無効なJSONです。スクリーンショットでは二重引用符を使用しているように見えますが、一重引用符を二重引用符に置き換えてください。
編集:正解です。kombuがこれを処理する必要があります。コードを見ると、ヘッダーでは大文字と小文字が区別される可能性があります。プロパティヘッダーをContent-Type
からcontent-type
に変更します。