zorn-v / messenger-supervisor-bundle
symfony messenger 的 supervisor:消费命令
Requires
- symfony/framework-bundle: ^4.4|^5.0
- symfony/lock: ^4.4|^5.0
- symfony/messenger: ^4.4|^5.0
- symfony/process: ^4.4|^5.0
This package is auto-updated.
Last update: 2024-08-29 05:18:48 UTC
README
受 laravel horizon 启发,用于 messenger:consume
命令的 supervisor。
使用配置中的参数运行 messenger:consume
命令,并监控这些命令的运行情况,如果需要则启动它们。
安装
composer require zorn-v/messenger-supervisor-bundle
用法
./bin/console messenger:supervisor
问题
如果你使用 SIGKILL
信号杀死主 supervisor 进程,它无法关闭消费者,并且在重启后会启动它们的副本。你应该使用 SIGTERM
来杀死 supervisor。
配置
在配置中,所有参数的名称都与 messenger:consume
参数的名称相同。你可以通过 ./bin/console messenger:consume --help
来检查。
还可以查看 symfony 文档中关于最佳实践的内容 https://symfony.com.cn/doc/current/messenger.html#deploying-to-production
# config/packages/messenger_supervisor.yaml messenger_supervisor: queue-1: ~ queue-2: receivers: [in_memory] memory-limit: 128M time-limit: 3600 limit: 1000 sleep: 1 bus: mybus queue-3: limit: 100
部署
你还需要在系统 supervisor 中设置 messenger:supervisor
以自动启动此命令,并通过类似 service messenger-supervisor restart
的命令来管理它。
systemd
systemd
是大多数 Linux 发行版的标准 init 系统。在 /etc/systemd/system
目录中创建单元文件。
#/etc/systemd/system/messenger-supervisor.service [Unit] Description=Symfony messenger supervisor After=network.target [Service] Type=exec User=www-data Restart=always ExecStart=/path/to/your/app/bin/console messenger:supervisor [Install] WantedBy=multi-user.target
如果需要,将 User
更改为你的服务器上的 Unix 用户。现在告诉 systemd 关于新单元的信息,启用它在系统启动时运行,并运行它。
$ sudo systemctl daemon-reload
$ sudo systemctl enable messenger-supervisor
$ sudo systemctl start messenger-supervisor
supervisord
例如,你可以在 Ubuntu 上通过以下方式安装它:
$ sudo apt-get install supervisor
Supervisor 配置文件通常位于 /etc/supervisor/conf.d
目录中。例如,你可以创建一个新的 messenger-supervisor.conf
文件。
#/etc/supervisor/conf.d/messenger-supervisor.conf [program:messenger-supervisor] command=/path/to/your/app/bin/console messenger:supervisor user=www-data numprocs=1 autostart=true autorestart=true process_name=%(program_name)s_%(process_num)02d
如果需要,将 user
更改为你的服务器上的 Unix 用户。接下来,告诉 Supervisor 读取你的配置并启动你的工作进程。
$ sudo supervisorctl reread $ sudo supervisorctl update $ sudo supervisorctl start messenger-supervisor
有关更多信息,请参阅 Supervisor 文档。