如何使用 Python 将 XML 文件发送到 RabbitMQ?

Posted

技术标签:

【中文标题】如何使用 Python 将 XML 文件发送到 RabbitMQ?【英文标题】:How to send a XML file to RabbitMQ using Python? 【发布时间】:2020-06-01 01:28:09 【问题描述】:

我有一个名为 Test.xml 的 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 中做到这一点?

【问题讨论】:

你有没有尝试过?他们的文档非常好。你有什么问题? @theMayer,我也在尝试这样做。我没有任何适当的文档可以帮助我将文件发送到rabbit MQ。如果您可以将此作为分析器发布,那么对所有阅读都非常有帮助 【参考方案1】:

这可以使用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 docs

【讨论】:

你能告诉我busic_publish中的exchange,queue是什么意思 @bumblebee,如果我对您的回答的理解是正确的,如果我只向 RabbitMQ 发送 xml 文件,则只需要 Publisher。另外我只需要知道发送文件的主机名、端口、用户名和密码 @pankaj 如果只想将 XML 文件的内容发送到 RabbitMQ 队列,那么单独使用 publisher 就足够了。但是队列通常与consumers 关联,后者使用队列中的消息。为了发布或消费消息,RabbitMQ 客户端需要向 RabbitMQ 服务器/主机发送connection。因此,您需要主机名、端口和凭据 @bumblebee,非常感谢您的信息。在我的情况下,我只需要将 xml 推送到 MQ 队列。它的另一个团队负责从 MQ 读取数据。我猜只需要发布者 @pankaj 然后发布者就是您所需要的。很高兴为您提供帮助!

以上是关于如何使用 Python 将 XML 文件发送到 RabbitMQ?的主要内容,如果未能解决你的问题,请参考以下文章

如何将Xml输出发送到文件?

如何在 python 中发送 xml-rpc 请求?

将 nmap 输出发送到文件而不将其打印到标准输出

如何使用 Python 将 xml 文件属性附加到数组值?

如何将文件从小程序发送到 gwt 服务器?

如何使用 Python 将 pdf 文件发送到多个电子邮件?