如何恢复RabbitMQ队列?

如何恢复RabbitMQ队列?,rabbitmq,celery,persistence,message-queue,task-queue,Rabbitmq,Celery,Persistence,Message Queue,Task Queue,我们正在使用RabbitMQ执行芹菜任务。我们有一个队列在处理230000多个任务,该队列昨天崩溃,日志如下 <code>2019-02-11 22:30:32,770 WARNING 13003 [celery.worker.consumer] consumer.py:289 - consumer: Connection to broker lost. Trying to re-establish the connection... Traceback (most recent c

我们正在使用RabbitMQ执行芹菜任务。我们有一个队列在处理230000多个任务,该队列昨天崩溃,日志如下

<code>2019-02-11 22:30:32,770 WARNING 13003 [celery.worker.consumer] consumer.py:289 - consumer: Connection to broker lost. Trying to re-establish the connection...
Traceback (most recent call last):
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/celery/worker/consumer.py", line 278, in start
    blueprint.start(self)
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/celery/bootsteps.py", line 123, in start
    step.start(parent)
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/celery/worker/consumer.py", line 821, in start
    c.loop(*c.loop_args())
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/celery/worker/loops.py", line 70, in asynloop
    next(loop)
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/kombu/async/hub.py", line 340, in create_loop
    cb(*cbargs)
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/kombu/transport/base.py", line 164, in on_readable
    reader(loop)
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/kombu/transport/base.py", line 146, in _read
    drain_events(timeout=0)
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/amqp/connection.py", line 324, in drain_events
    return amqp_method(channel, args)
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/amqp/channel.py", line 1647, in _basic_cancel_notify
    raise ConsumerCancelled(consumer_tag, (60, 30))
ConsumerCancelled: Basic.cancel: (0) None8
2019-02-11 22:30:32,878 INFO 13003 [celery.worker.consumer] consumer.py:479 - Connected to amqp://celery:**@127.0.0.1:5672//
2019-02-11 22:31:20,308 ERROR 13003 [celery.worker.consumer] consumer.py:364 - consumer: Cannot connect to amqp://celery:**@127.0.0.1:5672//: [Errno 104] Connection res$
Trying again in 2.00 seconds...
</code>
崩溃rabbitmq后,我使用以下命令再次重新启动:

sudo service rabbitmq-server restart
一旦rabbitmq重新启动,我就失去了所有队列。我的队列耐久性是持久的,消息传递模式是非持久的


有什么方法可以恢复队列中的消息吗?它拥有正在处理的非常重要的用户数据。

没有。非持久性意味着它们在RAM中,而不是存储在磁盘上


一般性注释-RabbitMQ不是数据库。即使您已将队列设置为持久性,但期望消息代理可靠地处理200000条消息的临时存储也是疯狂的。系统的设计应确保代理是任务之间的缓冲区,平均队列长度为零。如果您发现了如此大的数量,要么加快处理速度,要么将其存储在一个数据库中,该数据库设计为能够在偶尔的重启中存活下来,而不会产生什么后果

没有。非持久性意味着它们在RAM中,而不是存储在磁盘上

一般性注释-RabbitMQ不是数据库。即使您已将队列设置为持久性,但期望消息代理可靠地处理200000条消息的临时存储也是疯狂的。系统的设计应确保代理是任务之间的缓冲区,平均队列长度为零。如果您发现了如此大的数量,要么加快处理速度,要么将其存储在一个数据库中,该数据库设计为能够在偶尔的重启中存活下来,而不会产生什么后果