Symfony 管理RabbitMQ使用者

Symfony 管理RabbitMQ使用者,symfony,rabbitmq,Symfony,Rabbitmq,我计划使用RabbitMQ、Symfony2和RabbitMqBundle编写一个日志处理应用程序。 我正在使用的工具必须具有高可用性,并且每天必须处理数百万条条目,因此重要的是消费者始终处于启动和运行状态(短暂休息是可以的),否则我的队列可能会在一段时间后溢出 是否有关于如何管理消费者(用PHP编写)、在出现错误时启动/重新启动消费者等的最佳实践 谢谢我使用此bash脚本来确保在以下服务器上运行所有必需的使用者: #/bin/bash NB_任务=1 SYMFONY_ENV=“产品” 文本[0

我计划使用RabbitMQ、Symfony2和RabbitMqBundle编写一个日志处理应用程序。 我正在使用的工具必须具有高可用性,并且每天必须处理数百万条条目,因此重要的是消费者始终处于启动和运行状态(短暂休息是可以的),否则我的队列可能会在一段时间后溢出

是否有关于如何管理消费者(用PHP编写)、在出现错误时启动/重新启动消费者等的最佳实践


谢谢

我使用此bash脚本来确保在以下服务器上运行所有必需的使用者:

#/bin/bash
NB_任务=1
SYMFONY_ENV=“产品”
文本[0]=“应用程序/控制台rabbitmq:使用者主”
TEXT[1]=“应用程序/控制台rabbitmq:消费者辅助”
对于“${text[@]}”中的文本
做
NB|U发布=$(ps ax | grep“$text”| grep-v grep | wc-l)
TASK=“/usr/bin/env php${text}--env=${SYMFONY_env}”
对于((i=${NB_};iStop消费者)
要使用名称
my_consumer
停止您的消费者,请使用

kill `ps aux | less | grep 'rabbitmq:consumer my_consumer' | grep -v grep | awk '{print $2}'`
nohup /usr/bin/env php app/console rabbitmq:consumer consumer --env=prod &
  • ps aux | less | grep'rabbitmq:consumer my|u consumer'
    -将查找该consumer的所有正在运行的进程
  • grep-v grep
    -将排除您自己的搜索过程
  • awk'{print$2}'
    -仅从行中获取进程id
  • kill
    -将终止所有找到的进程
  • 启动消费者 要使用名称
    my_consumer
    启动您的消费者,请使用

    kill `ps aux | less | grep 'rabbitmq:consumer my_consumer' | grep -v grep | awk '{print $2}'`
    
    nohup /usr/bin/env php app/console rabbitmq:consumer consumer --env=prod &
    

    我在项目中有很多使用者,在部署后很难重新启动它们。我开始使用+来部署我的项目。我编写了一些自定义任务,以基于yaml配置启动/停止/重新启动使用者。任务基于上面的命令。

    如果我看得正确,脚本只启动使用者,但不会启动处理一个消费者死亡的情况,它不会让它重生。为此,我设置了一个cron任务,让它每分钟运行一次脚本,以确保它始终正常工作。我还尝试了supervisord,它看起来很好,它让rabbitmq消费者在死亡的情况下重生,等等。当然,有很多这样的工具(
    god
    是另一个).我想我已经回答了你最初的问题,所以如果你选择它作为最佳答案,我将不胜感激。:)对不起,我的生活中没有窗户:)