Rabbitmq 停止 Rabitmq 进程和队列后保留请求

问题描述 投票:0回答:1

我用rabbitmq制作了一个连接应用程序,它工作正常,但是当我停止rabbitmq进程时,我的所有请求都会丢失,我希望即使在终止rabbitmq服务后,我的请求也会被保存,并且在重新启动rabbitmq服务后,我的所有请求都会返回到他们的自己的地方。

这是我的rabbitmq.py:

import pika
import SimilarURLs


data = ''

connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()


def rabit_mq_start(Parameter):
    channel.queue_declare(queue='req')
    a = (take(datas=Parameter.decode()))
    channel.basic_publish(exchange='',
                          routing_key='req',
                          body=str(a))
    print(" [x] Sent {}".format(a))
    return a


channel.start_consuming()


def take(datas):
    returns = SimilarURLs.start(data=datas)
    return returns

另外,我很抱歉我的问题写错了。

python-3.x rabbitmq task-queue pika connexion
1个回答
2
投票

您需要启用发布者确认(通过 confirm_delivery

 对象上的 
channel
 方法)。然后,您的应用程序必须跟踪哪些消息已确认发布,哪些消息尚未确认。您必须自己实现这一点。当 RabbitMQ 停止并再次启动时,您的应用程序可以重新发布未确认的消息。

最好使用异步发布者示例作为指导。如果您使用

BlockingConnection
,当消息被确认时,您将不会收到异步通知,从而违背了他们的目的。

© www.soinside.com 2019 - 2024. All rights reserved.