Ich habe aktualisiert rabbitmqadmin Datei Datei Content-Publishing zu unterstützen. Versuchen Linie zu finden enthalten EXTRA_VERBS = {
sowie def invoke_publish(self):
und aktualisieren ihre zugehörigen Code wie folgt
EXTRA_VERBS = {
'publish': {'mandatory': ['routing_key'],
'optional': {'payload': None,
'pfile': None,
'properties': {},
'exchange': 'amq.default',
'payload_encoding': 'string'},
'json': ['properties'],
'uri': '/exchanges/{vhost}/{exchange}/publish'},
'get': {'mandatory': ['queue'],
'optional': {'count': '1', 'requeue': 'true',
'payload_file': None, 'encoding': 'auto'},
'uri': '/queues/{vhost}/{queue}/get'}
}
und
def invoke_publish(self):
(uri, upload) = self.parse_args(self.args, EXTRA_VERBS['publish'])
if not 'payload' and 'pfile' in upload:
data = sys.stdin.read()
upload['payload'] = b64(data)
upload['payload_encoding'] = 'base64'
elif not 'payload' in upload:
with open('populate/' + upload['pfile']) as f: data = f.read()
upload['payload'] = b64(data)
upload['payload_encoding'] = 'base64'
resp = json.loads(self.post(uri, json.dumps(upload)))
if resp['routed']:
self.verbose("Message published")
else:
self.verbose("Message published but NOT routed")
entfernen 'populate/' +
aus der folgenden Zeile, wenn Sie Datei mit absoluten Pfad zur Verfügung stellen möchten.
with open('populate/' + upload['pfile']) as f: data = f.read()
Ohne Updates zu öffnen (...) folgender Befehl gut für mich gearbeitet, diese Datei rules.json angenommen wurde in relativem Verzeichnis "bevölkern" platziert
python rabbitmqadmin.py publish exchange=feed-mgmt-in routing_key='#' properties='{"type":"domain-collections/rules"}' pfile="rules.json"
Wie veröffentlichen diese Schnipsel die Nachrichten/Nutzlasten aus der Datei? – summerbulb
versuchen Sie etw wie folgt: 'while read line; mach rabbitmqadmin publish exchange = amq.default routing_key = test payload = "$ line"; done
aeryaguzov
'payload =" $ line "' würde JSON \ -escapes wie '{" foo ":" \ "verschachtelte Anführungszeichen \" "}" zerlegen (weil die Shell auch \ -escapes interpretiert). Aber Sie können Payload an rabbitmqadmins stdin übergeben. –