【发布时间】:2012-10-14 12:42:16
【问题描述】:
我使用 RabbitMQ 作为我的消息代理,我的工作人员是 Celery 任务。我正在尝试诊断一个问题,即我将任务排入 RabbitMQ 但 Celery 没有接听。
有什么方法可以检查 RabbitMQ 中排队的任务是什么?我想查看它们入队的日期和时间、指定的任何 ETA、参数和任务名称。
我无法在文档中找到这些信息——也许我忽略了它——并希望你们中的一些人可能知道检查任务队列的简单方法。谢谢。
【问题讨论】:
我使用 RabbitMQ 作为我的消息代理,我的工作人员是 Celery 任务。我正在尝试诊断一个问题,即我将任务排入 RabbitMQ 但 Celery 没有接听。
有什么方法可以检查 RabbitMQ 中排队的任务是什么?我想查看它们入队的日期和时间、指定的任何 ETA、参数和任务名称。
我无法在文档中找到这些信息——也许我忽略了它——并希望你们中的一些人可能知道检查任务队列的简单方法。谢谢。
【问题讨论】:
您可以使用Flower实时监控任务。
https://github.com/mher/flower
还检查 rabbitmqclt 命令检查 RabbitMQ 服务器状态:
http://www.rabbitmq.com/man/rabbitmqctl.1.man.html
rabbitmqctl list_queues
【讨论】:
还有一些 celery 任务来监控队列:
http://docs.celeryproject.org/en/latest/userguide/monitoring.html
查看这些命令:
#shows status of all worker nodes
celery status
#List active tasks
celery inspect active
#Show worker statistics (call counts etc.)
celery inspect stats
【讨论】:
我相信您正在寻找的命令是:
celery inspect reserved
文档[1]有如下描述:
预留任务是已经收到,但仍在等待执行的任务。
【讨论】:
只要management plugin 是enabled,就可以从队列中消费任意数量的消息,并且可以选择重新排队:
rabbitmqadmin get queue=queue_name requeue=true count=100
【讨论】: