python - Qpid Proton Python:关闭前发送多条消息
问题描述
我之前使用过 RabbitMQ,了解到建立连接的成本很高,我们应该尝试保持一个连接处于活动状态来发送消息。在 Python 中,这非常简单,因为您可以将连接创建为一个可以独立于发送或消费逻辑关闭的对象。
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='', routing_key='', body='Hello World!')
connection.close()
遗憾的是,Python Qpid Proton 库没有很好的文档记录。至少对于像我这样的菜鸟来说,很难理解事情。查看网站上提供的示例代码,您需要为要发送的每条消息实例化一个 MessagingHandler 对象,其中包括连接的打开和关闭。
class MessageHandler(MessagingHandler):
def __init__(self, message: dict):
super(MessageHandler, self).__init__()
self.conn_url = HOST
self.address = ADDRESS
self.message_body = json.dumps(message)
def on_start(self, message):
conn = message.container.connect(self.conn_url)
message.container.create_sender(conn, self.address)
def on_sendable(self, message):
message = Message(self.message_body)
message.sender.send(message)
message.sender.close()
message.connection.close()
Container(MessageHandler({"title":"test"})).run()
现在,基于此,我觉得为每条要发送的消息实例化一个处理程序有点愚蠢,因此每次都打开和关闭一个新连接。我觉得我一定错过了一些东西,因为我无法想象这是做到这一点的正确方法。
有什么建议么?
解决方案
推荐阅读
- javascript - 使用 EvaluateJavaScript 单击按钮的意外行为
- sdk - 下载 FairPlay 流媒体服务器 SDK
- python - 从交互式 matplotlib 图中获取数据
- python - 如何将自定义选项传递给 fab 命令
- c++-cli - 连接到 GMFBridge 漏极滤波器输入引脚的问题
- c++ - zeromq 在 I/O 线程中引发异常
- r - 使用 dplyr 进行子集化/过滤 - 改进我的语法
- r-package - 如果我没有睡眠日志,如何在 R 中修改 G.Shell.GGIR 函数的第 4 部分
- azure - 天蓝色部署选项源未显示 vsts
- matlab - 将字符串数组的元胞数组转换为双精度数组