我有用PHP编写的RabbitMQ生产者和消费者(Symfony 4)。消费者正在使用自定义symfony 4命令以及bundle php-amqplib / rabbitmq-bundle
这是问题。我希望能够设置……
解决您的“问题”很简单。你所要做的就是利用 supervisord 它会在场景后面观察你的命令,并在它下降时重新启动它。
PHP不擅长长时间运行的进程,因此您希望让您的消费者/工作者能够合理地消费(而不是很多)消息。例如100至200就足够了。
这就是你要做的事情:
为您的命令创建一个supervisor配置文件 - 请查看下面的示例。如果您希望转到文档并阅读以下属性的确切内容。
在主管内启用此配置。
就这样!
[program:name-of-your-command] command=php bin/console rabbitmq:consumer -m 100 your_queue --env=prod -DFOREGROUND # Your consumer command directory=/path/to/your/app autostart=true autorestart=true startretries=5 startsecs=0 user=deployer # Your user numprocs=1 # This tells supervisor to run only one consumer process_name=%(program_name)s_%(process_num)02d stderr_logfile=/path/to/your/app/var/logs/%(program_name)s_stderr.log stderr_logfile_maxbytes=10MB stdout_logfile=/path/to/your/app/var/logs/%(program_name)s_stdout.log stdout_logfile_maxbytes=10MB
例子: