如何解决当我在Pika中创建永久发行商时遇到问题
我有一个Django网站,我希望来自它的请求始终发布到RabbitMQ。为此,我使用的是Pika BlockingConnection
,并且我始终保持连接打开状态,以使用basic_publish
发布网站请求,但是当连接过时时,每当发布新消息时,都会出现以下异常
pika.exceptions.StreamLostError: Stream connection lost: BrokenPipeError(32,'Broken pipe')
这是我用来管理连接的代码
class ConnectionManager():
connection = None
def get_connection(self):
if(self.connection and self.connection.is_open):
return self.connection
params = pika.URLParameters('amqp://guest:guest@rabbit-server1:5672/%2F')
self.connection = pika.BlockingConnection(params)
return self.connection
def get_channel(self,queue_name):
if(self.channel and
self.channel.is_open and
self.connection.is_open):
return channel
self.channel = self.get_connection().channel()
self.channel.queue_declare(queue=queue_name,durable = True)
return self.channel
用于发布:
publisher = ConnectionManager()
def publish_message(request_message):
publisher.get_channel("queue").basic_publish(exchange='',routing_key="some_key",body=json.dumps(request_message),properties=pika.BasicProperties(
delivery_mode = 2,))
如何维护一个永久运行的连接以达到我的目的?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。