yeebase/supervisor

Flow应用程序的监督客户端包

安装: 4,547

依赖关系: 0

建议者: 0

安全: 0

星级: 4

关注者: 4

分支: 1

开放问题: 0

类型:neos-package

1.0.0 2017-01-20 11:01 UTC

This package is auto-updated.

Last update: 2024-09-18 02:36:35 UTC


README

使用此Flow包,您可以从Flow应用程序控制并监控您的监督守护进程http://supervisord.org/api.html和所有配置的过程。您可以使用它来控制在复杂消息队列场景中计算工作队列票证的工人。

Yeebase.Supervisor是Flow的Flowpack.JobQueue.Common包和一些消息队列后端(如Flowpack.JobQueue.Beanstalkd)的一个很好的补充。

您想在消息队列中延迟任务并在Flow应用程序中执行异步操作吗?

使用Flow的示例消息队列堆栈

  1. 监督守护进程 - 监控和控制您的作业队列工人(他们在做艰苦的工作)http://supervisord.org/
  2. Beanstalkd消息队列 - 管理要分配给工人的作业(愚蠢,快速)http://kr.github.io/beanstalkd/
  3. Flowpack.JobQueue.Common - 用于将作业/函数放入异步管道的Flow包(使用简单的@Job\Defer注释)https://github.com/Flowpack/jobqueue-common
  4. Flowpack.JobQueue.Beanstalkd - Beanstalkd后端的作业队列实现 https://github.com/Flowpack/jobqueue-beanstalkd
  5. Yeebase.Supervisor客户端包 - 监控和控制所有配置的监督进程 https://github.com/yeebase/Yeebase.Supervisor

安装与配置

只需将"yeebase/supervisor"作为依赖项添加到您的composer.json中,并在根目录中运行"composer update"。您还必须安装xml-rpc php扩展(希望在未来的版本中删除此依赖项)。

在Settings.yaml中配置监督连接

Yeebase:
  Supervisor:
    host: 'unix:///var/run/supervisor.sock'
    port: -1
    timeout: 30
    username:
    password:

命令行工具

Yeebase.Supervisor包附带一个简单的Flow命令控制器

  1. 测试到监督器的连接并获取一些详细信息
./flow supervisor:status

这应该输出类似以下内容

Successfully connected to supervisor service:
Address: unix:///var/run/supervisor.sock:-1
Identification: supervisor
Version: 3.0 
Api-Version: 3.0
State: RUNNING
  1. 显示所有配置的进程及其详细信息
./flow supervisor:processes status all

只需输入./flow help supervisor即可查看所有可用命令的概览,或输入./flow help supervisor:processes(例如)了解如何使用特定命令。

在您的类中使用SupervisorService

Yeebase.Supervisor包的主要部分是名为"SupervisorService"的监督客户端类。在Flow中,您可以通过以下PHP代码将此类注入到您自定义的控制器中

...
use Yeebase\Supervisor\Service\SupervisorService;

/**
 * My funky class that shows details about configured supervisor processes
 */
class MyFunkyController extends AbstractBaseController {

	/**
	 * @Flow\Inject
	 * @var SupervisorService
	 */
	protected $supervisorService;
...

如果已经注入了SupervisorService,您可以在类中使用它而无需手动初始化 - 有点像这样

  function showVersionAction() {
    $this->view->assign('version', $this->supervisorService->getVersion();  
  }