python-3.x - 如何使用 Python 将 XML 文件发送到 RabbitMQ?
问题描述
我有一个名为的 xml 文件Test.xml
,我正在尝试使用 python 发送 RabbitMQ。
我知道以下有关 Rabbit MQ 的详细信息
Hostname: xxx.xxxx.xxx
AMQP Port (SSL) :4589
ESB Portal (Message Search): http://xxx.xxx.xxx:8585
RabbitMQ Web UI (https) :https://xxx.xxx.xxxx:15672
如何从 python 完成?
解决方案
这可以使用pika来完成,您可以读取文件内容并将其作为大字符串发送到 RabbitMQ。另一方面,您可以使用ElementTree.fromstring
.
连接细节:
credentials = pika.PlainCredentials('username', 'password')
conn = pika.BlockingConnection(pika.ConnectionParameters('host', port, 'vhost', credentials))
channel = conn.channel()
出版商:
with open('filename.xml', 'r') as fp:
lines = fp.readlines()
channel.basic_publish('exchange', 'queue', ''.join(lines))
消费者:
def on_message(unused_channel, unused_method_frame, unused_header_frame, body):
lines = body.decode()
doc = ElementTree.fromstring(lines)
tags = doc.findall("tag")
## DO YOUR STUFF HERE
channel.basic_consume('queue', on_message)
channel.start_consuming()
希望这可以帮助!
RabbitMQ 流程:
参考:RabbitMQ 文档
推荐阅读
- javascript - JavaScript:这种特殊字符的替换正确吗?
- typescript - Typescript中显式解包的选项?
- python - 如何使用 pytest 测试 atexit
- javascript - 功能子组件不会在道具更改时重新呈现
- css - 如何使导航栏下拉菜单不扩展纯 CSS 中的导航栏
- php - 无法使用 PHP Simple DOM Parser 访问正确的类/ID
- c - bind() 是否修改 C 中的 sin_port?
- date - Neo4j 过滤结果,其中日期在几个时期的范围内
- java - 使用 JDBC 更新数据库,其中包含一些应忽略的值
- android - 来自 viewpager2 和我的父片段的 SharedViewModel