停止rabitmq进程和队列后,rabbitmq保留请求

vq8itlhq  于 2023-10-20  发布在  RabbitMQ
关注(0)|答案(1)|浏览(130)

我用rabbitmq做了一个连接应用程序,它工作正常,但当我停止rabbitmq进程时,我所有的请求都会丢失,我想即使在杀死rabitmq服务后,我的请求也会被保存,重新启动rabitmq服务后,我所有的请求都会返回到自己的位置。
以下是我的rabitmq.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

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

8ehkhllq

8ehkhllq1#

您需要启用发布者确认(通过channel对象上的confirm_delivery方法)。然后,您的应用程序必须跟踪哪些消息已被确认为已发布,哪些消息尚未被确认。你将不得不自己实现它。当RabbitMQ停止并再次启动时,您的应用程序可以重新发布未确认的消息。
最好使用异步发布者示例作为指导。如果您使用BlockingConnection,则在确认消息时不会收到cnrc通知,从而无法达到其目的。

相关问题