ecommit / messenger-supervisor-bundle
使用 symfony/messenger 与 Supervisor
v1.2.0
2023-12-23 19:06 UTC
Requires
- php: ^8.1
- egulias/email-validator: ^3.0|^4.0
- lstrojny/fxmlrpc: ^0.22
- nyholm/psr7: ^1.0
- psr/http-client: ^1.0
- psr/log: ^1.1|^2|^3
- supervisorphp/supervisor: ^4.0|^5.0
- symfony/config: ^5.4|^6.4|^7.0
- symfony/console: ^5.4|^6.4|^7.0
- symfony/dependency-injection: ^5.4|^6.4|^7.0
- symfony/framework-bundle: ^5.4|^6.4|^7.0
- symfony/http-client: ^5.4|^6.4|^7.0
- symfony/http-kernel: ^5.4|^6.4|^7.0
- symfony/mailer: ^5.4|^6.4|^7.0
- symfony/messenger: ^5.4|^6.4|^7.0
- symfony/twig-bridge: ^5.4|^6.4|^7.0
- symfony/twig-bundle: ^5.4|^6.4|^7.0
- twig/twig: ^2.12.0|^3.0
Requires (Dev)
- dg/bypass-finals: ^1.3
- doctrine/dbal: ^2.11.0|^3.0
- doctrine/doctrine-bundle: ^2.4.5
- friendsofphp/php-cs-fixer: ^3.0
- phpunit/phpunit: ^10
- symfony/doctrine-messenger: ^5.4|^6.4|^7.0
- symfony/yaml: ^5.4|^6.4|^7.0
- vimeo/psalm: ^5
README
EcommitMessengerSupervisorBundle 包(用于 Symfony)用于管理 Messenger 组件 和 Supervisor。
可用功能
- 启动 Supervisor 程序(工作进程)
- 停止 Supervisor 程序(工作进程)
- 显示 Supervisor 程序(工作进程)状态
- 以 Nagios 格式显示 Supervisor 程序(工作进程)状态
- 工作进程失败后
- 停止 Supervisor 程序(可以禁用)
- 发送电子邮件(可以禁用)
安装
使用 Composer 安装包:在您的项目目录中,执行以下命令
$ composer require ecommit/messenger-supervisor-bundle
在您的项目的 config/bundles.php
文件中启用包
return [ //... Ecommit\MessengerSupervisorBundle\EcommitMessengerSupervisorBundle::class => ['all' => true], //... ];
在 Supervisor 配置中启用 API 并添加您的工人(更多信息请参阅 Supervisor 文档)
;eg in /etc/supervisor/conf.d/myconf.conf [inet_http_server] port = 127.0.0.1:9001 username = user password = 123 [program:program_async] command=php /path/to/your/app/bin/console messenger:consume async process_name=%(program_name)s_%(process_num)02d numprocs=1 autostart=true autorestart=true user=ubuntu ;You can define others programs (workers) : ;[program:program_async2] ;command=php /path/to/your/app/bin/console messenger:consume async2 ;process_name=%(program_name)s_%(process_num)02d ;numprocs=2 ;autostart=true ;autorestart=true ;user=ubuntu
配置 Messenger(更多信息请参阅 文档)和 Mailer(更多信息请参阅 文档)。
在您的项目中添加配置文件 config/packages/ecommit_messenger_supervisor.yaml
ecommit_messenger_supervisor: supervisor: #Supervisor API configuration host: '127.0.0.1' #IP address - Required username: user #Username - Not required - Default value: null password: 123 #Password - Not required - Default value: null #port: 9001 #Port - Not required - Default value: 9001 #timeout: 3600 #API timeout (in seconds) - Not required - Default value: 3600 #Transports / Programs configuration : #Mapping "Messenger transport name" -> "Supervisor program name (group name)" transports: async: program_async #async = Messenger transport name | program_async = Supervisor program (group) name #Or you can set options : #async: # failure: # stop_program: true #Stop program after failure - Not required - Available values: "always", "will-not-retry" (only if the message cannot be retried), "never" - Default value : "always" # send_mail: true #Send mail after failure - Not required - Available values: "always", "will-not-retry" (only if the message cannot be retried), "never" - Default value : "always" #You can define others programs : #async2: program_async2 #Mailer configuration mailer: from: from@domain.com #Sender - Required if a program is setting with send_mail=true option to: to@domain.com #Recipient - Required if a program is setting with send_mail=true option #You can use multiple recipients: #to: ['to1@domain.com', 'to2@domain.com'] #subject: "[Supervisor][<server>][<program>] Error" #Suject - Not required - Default value : "[Supervisor][<program>] Error" #<program> is replaced by Supervisor program (group) name #<server> is replaced by server name
使用方法
#Start a program php bin/console ecommit:supervisor start program_async #Start multiple programs php bin/console ecommit:supervisor start program_async program_async2 #Start all programs php bin/console ecommit:supervisor start all #Stop a program php bin/console ecommit:supervisor stop program_async #Stop many programs php bin/console ecommit:supervisor stop program_async program_async2 #Stop all programs php bin/console ecommit:supervisor stop all #Get status on a single program php bin/console ecommit:supervisor status program_async #Get status on multiple programs php bin/console ecommit:supervisor status program_async program_async2 #Get status on all programs php bin/console ecommit:supervisor status all #Use can use Nagios format php bin/console ecommit:supervisor status all --nagios
您还可以使用 Ecommit\MessengerSupervisorBundle\Supervisor\Supervisor
服务
use Ecommit\MessengerSupervisorBundle\Supervisor\Supervisor; class MyClass { protected $supervisor; public function __construct(Supervisor $supervisor) //Supervisor service is injected { $this->supervisor = $supervisor; } public function myMethod(): void { //$this->supervisor->startProgram('program_async'); //$this->supervisor->stopProgram('program_async'); //$status = $this->supervisor->getProgramsStatus(['program_async']); } }
许可证
此包可在 MIT 许可证下使用。有关完整许可证,请参阅 LICENSE 文件。