管理RabbitMQ消费者

Tib*_*bor 5 rabbitmq symfony

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

是否有关于如何管理使用者的最佳实践(用PHP编写),在出现错误时启动/重启它们等?

谢谢

Ant*_*nko 5

我使用这个bash脚本来确保在imagepush.to上运行所有必需的使用者:

#!/bin/bash

NB_TASKS=1
SYMFONY_ENV="prod"

TEXT[0]="app/console rabbitmq:consumer primary"
TEXT[1]="app/console rabbitmq:consumer secondary"

for text in "${TEXT[@]}"
do

NB_LAUNCHED=$(ps ax | grep "$text" | grep -v grep | wc -l)

TASK="/usr/bin/env php ${text} --env=${SYMFONY_ENV}"

for (( i=${NB_LAUNCHED}; i<${NB_TASKS}; i++ ))
do
  echo "$(date +%c) - Launching a new consumer"
  nohup $TASK &
done

done
Run Code Online (Sandbox Code Playgroud)

如果我没记错的话,我从KnpBundles代码中获取了基础.