首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP (Symfony 4) rabbitmq使用者命令作为守护进程

PHP (Symfony 4) rabbitmq使用者命令作为守护进程
EN

Stack Overflow用户
提问于 2019-02-27 12:02:37
回答 1查看 5.4K关注 0票数 3

我用PHP编写了RabbitMQ生产者和消费者(Symfony 4)。使用者使用的是自定义symfony 4命令以及包php-amqplib/rabbitmq-bundle

这是问题所在。我希望能够设置使用者在任务出现在队列中后立即侦听和使用它们。

我试着把它作为一站式系统服务运行,但它是,不能很好地运行

系统d:

代码语言:javascript
复制
[Unit]
Description=consumer for rabbitmq

[Service]
Type=oneshot
ExecStart=/bin/sh /var/www/public/rabbit.sh
ExecStop=/usr/bin/pkill -f "rabbitmq:consumer"
RemainAfterExit=yes
StandardOutput=journal

[Install]
WantedBy=multi-user.target

如果有比写守护程序更好的解决方案,请告诉我。我只想让使用者在任务加入队列后立即收听和使用任务。

EN

回答 1

Stack Overflow用户

发布于 2019-02-28 11:53:19

解决你的“问题”很简单。你要做的就是,利用监督d,它会监视你在场景后面的命令,如果它倒下了,就把它拿回来。

PHP不擅长长时间运行过程,因此您希望保持您的使用者/工作人员能够合理地(不多)地使用消息。100到200就够了。

这就是你要做的:

  1. 为您的命令创建一个主管配置文件-检查下面的示例。如果你想去文档,看看下面的属性是怎么做的。
  2. 在管理器中启用此配置。

就这样!

代码语言:javascript
复制
[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

示例:

  • 在capistrano部署过程中与主管一起处理symfony应用程序的豆茎和RabbitMQ工作人员
  • 在码头集装箱内使用监督员
  • 与监督员一起监测过程
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54905061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档