只需在UI中輸入消息並單擊「發佈消息」按鈕,即可輕鬆地將單條消息發佈到RabbitMQ隊列。從文件向RabbitMQ發佈多條消息
如何發佈一批消息?
我有一個消息發送到RabbitMQ的文件。每行有一條消息。
如何將文件中的所有消息發佈到我的RabbitMQ服務器?
有沒有辦法從命令行執行它?
只需在UI中輸入消息並單擊「發佈消息」按鈕,即可輕鬆地將單條消息發佈到RabbitMQ隊列。從文件向RabbitMQ發佈多條消息
如何發佈一批消息?
我有一個消息發送到RabbitMQ的文件。每行有一條消息。
如何將文件中的所有消息發佈到我的RabbitMQ服務器?
有沒有辦法從命令行執行它?
您需要使用rabbitmqadmin
CLI工具:
https://www.rabbitmq.com/management-cli.html
rabbitmqadmin publish exchange=amq.default routing_key=test payload="hello, world"
只需使用amqp-tool:
npm install amqp-tool -g
amqp-tool --host rabbitmq.local -u <user> -p <password> -q <queue name> --import file.json
我已經更新rabbitmqadmin文件,支持文件內容發佈。試着找出含有EXTRA_VERBS = {
以及def invoke_publish(self):
線和更新相關的代碼如下
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/' +
,如果你想使用絕對路徑提供文件。
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"
使用rabbitmqadmin
while read -r line; do
echo $line | rabbitmqadmin publish exchange=amq.default routing_key=my_queue ;
done < messages
未指定有效負載參數爲rabbitmqadmin publish
表示它從標準輸入讀取有效負載。
我做了一件事情,只是爲了處理這個(並從rmq消費信息)。您可以從releases page on github中獲取它的二進制文件。它具有TLS支持和其他一些不錯的unixy功能(ENV var支持用戶/密碼,用於輸入/輸出的自定義分隔符)。
這段代碼如何從文件發佈消息/有效載荷? – summerbulb
嘗試像這樣:'while read line;做rabbitmqadmin發佈exchange = amq.default routing_key = test payload =「$ line」;完成
aeryaguzov
'payload =「$ line」'會打破JSON \ -escapes像'{「foo」:「\」嵌套引號\「」}'(因爲您的shell也會解釋\ -escapes)。但是你可以將有效載荷傳遞給rabbitmqadmin的標準輸入。 –