RabbitMQ Python Pika-多个消息的连接处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RabbitMQ Python Pika-多个消息的连接处理相关的知识,希望对你有一定的参考价值。

我已经阅读了多个博客和有关正确设置RabbitMQ连接以进行发布的文档。以下是我的情况

  • 几乎没有执行某些任务并将其发布到RabbitMQ的计划作业
  • 作业以不同的时间间隔运行,但是输出将发布到相同的RabbitMQ队列中

以下是实现方式

def get_credentials(self):
    print ("Host ", config_reader.get_lookup_data('RABBITMQ', 'host'))
    credentials = pika.PlainCredentials(config_reader.get_lookup_data('RABBITMQ', 'user'),
                                        config_reader.get_lookup_data('RABBITMQ', 'password'))
    return credentials

def publish_message(self, message):
    print ("Publish message" , message)
    connection = pika.BlockingConnection(
        pika.ConnectionParameters(host=config_reader.get_lookup_data('RABBITMQ', 'host'),
                                  credentials=self.get_credentials()))
    channel = connection.channel()
    channel.exchange_declare(exchange=config_reader.get_lookup_data('RABBITMQ', 'exchange'), passive=True)
    result = channel.queue_declare(exclusive=False,
                                   queue=config_reader.get_lookup_data('RABBITMQ', 'sensor_queue'))
    channel.queue_bind(result.method.queue,
                       exchange=config_reader.get_lookup_data('RABBITMQ', 'exchange'),
                       routing_key=config_reader.get_lookup_data('RABBITMQ', 'routing_key'))
    print ('Publishing message ', message)
    channel.basic_publish(exchange=config_reader.get_lookup_data('RABBITMQ', 'exchange'), body=json.dumps(message),
                          routing_key=config_reader.get_lookup_data('RABBITMQ', 'routing_key'),
                          properties=pika.BasicProperties(
                              headers='Content-Type': 'application/json'  # Add a key/value header
                          ))
    print ('published')

我观察到以上实现是每个工作都在建立连接,然后建立通道。我怀疑这种实现是否会导致不必要的开销。

有人可以建议正确的方法来处理连接对象。我个人觉得为每条消息建立连接肯定是开销]

我已经阅读了多个博客和有关正确设置RabbitMQ连接以进行发布的文档。以下是我的场景:执行一些任务并发布...的几个计划作业...

答案

https://www.rabbitmq.com/tutorials/amqp-concepts.html#amqp-connections

以上是关于RabbitMQ Python Pika-多个消息的连接处理的主要内容,如果未能解决你的问题,请参考以下文章

Python操作rabbitmq系列:多个接收端消费消息

Python-RabbitMQ消息队列的发布与订阅

如何删除rabbitmq(pika)中的消息

当我尝试使用 pika (python) 向 RabbitMQ 确认消息时出现错误“未知的传递标签”

RabbitMQ发送消息+python

python pika简单实现RabbitMQ通信