So senden Sie ein JSON-Nutzlast zu RabbitMQ mit dem web-plugin?
Ich habe eine RabbitMQ 3.4.2 Beispiel mit einem web-management-plugin installiert.
Wenn ich push-to-die Nachricht {'operationId': 194}
an die Warteschlange über Python ' s kombu queue-Paket, wird die Nachricht Lesen, die am anderen Ende als ein Wörterbuch.
Allerdings, wenn ich die Nachricht senden, mit der web-Konsole:
Bekomme ich die folgende Fehlermeldung auf dem empfangenden Ende:
operation_id = payload['operationId']
TypeError: string indices must be integers
Ich habe versucht, das hinzufügen einer content-type
header und Eigentum, aber ohne Erfolg.
Da der Leser code ist der gleiche, es bedeutet, dass der web-sender nicht markieren, wird die gesendete Nachricht als JSON /Wörterbuch Nutzlast, und es ist daher zu Lesen als einen string auf das andere Ende.
Keine Idee, wie markieren einer Nachricht als eine JSON Nachricht mit dem RabbitMQ-web-Konsole?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Musste ich
content_type
stattcontent-type
(ein Unterstrich statt Bindestrich).Dies ist eine ziemlich fragwürdige design-Entscheidung, da die standard-jeder weiß, ist
content-type
.Müssen Sie zum de-serialisieren der Ausgabe.
Zusätzlich
{'operationId': 194}
ist kein gültiges JSON. Obwohl es so aussieht, wie Sie doppelte Anführungszeichen verwenden in der Abbildung, aber stellen Sie sicher, ersetzen Sie die einfachen Anführungszeichen, mit doppelten Anführungszeichen.Edit:
So sind Sie richtig, kombu sollte damit umgehen. Den code anzuschauen, ist es wahrscheinlich, dass der header groß-und Kleinschreibung. Ändern Sie die Eigenschaften header von
Content-Type
zucontent-type
.{'operationId': 194}
es empfangen wird, ein Wörterbuch, auf das andere Ende. Ich will diese Verhalten beim senden über die web-Konsole zu._
in meinem eigenen amqp Bibliothek. github.com/eandersson/amqp-storm/blob/master/amqpstorm/...