मैं rabbitmqadmin फ़ाइल फ़ाइल सामग्री प्रकाशन का समर्थन करने के नवीनीकृत किया है। के रूप में
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'}
}
और
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")
इस प्रकार निम्न पंक्ति से 'populate/' +
निकालें यदि आप निरपेक्ष पथ का उपयोग कर फ़ाइल प्रदान करना चाहते हैं EXTRA_VERBS = {
के साथ-साथ def invoke_publish(self):
युक्त लाइन को खोजने और उनसे संबंधित कोड को अद्यतन करने का प्रयास करें।
with open('populate/' + upload['pfile']) as f: data = f.read()
खोलने के लिए अद्यतन के बिना
(...) निम्न आदेश मेरे लिए काम किया ठीक, यह सोचते हैं कि फ़ाइल rules.json रिश्तेदार निर्देशिका में रखा गया था "पॉप्युलेट"
python rabbitmqadmin.py publish exchange=feed-mgmt-in routing_key='#' properties='{"type":"domain-collections/rules"}' pfile="rules.json"
कैसे इस स्निपेट फ़ाइल से संदेश/पेलोड प्रकाशित करता है? – summerbulb
इस तरह की smth कोशिश करें: 'पढ़ने लाइन के दौरान; rabbitmqadmin प्रकाशित एक्सचेंज = amq.default routing_key = test payload = "$ line"; किया गया
aeryaguzov
'payload =" $ line "' JSON \ -escapes को तोड़ देगा जैसे {{"foo": "\" नेस्टेड उद्धरण \ ""} '(क्योंकि आप खोल \ -escapes भी व्याख्या करते हैं)। लेकिन आप rabbitmqadmin के stdin को पेलोड पास कर सकते हैं। –