vivait / worker-command-bundle
集成 Pheanstalk 和 endless 命令,允许轻松创建自定义工作进程。
Requires
- leezy/pheanstalk-bundle: ~2.5
- wrep/daemonizable-command: ~1.2
This package is not auto-updated.
Last update: 2020-01-20 09:03:13 UTC
README
集成 Pheanstalk 和 endless commands,以允许轻松创建可托管的自定义 beanstalk 工作进程。
安装
将 "vivait/worker-command-bundle": "dev-master" 添加到您的 composer.json 中,并运行 composer update
更新您的 AppKernel
public function registerBundles() { $bundles = array( ... new Vivait\WorkerCommandBundle\VivaitWorkerCommandBundle(), new Leezy\PheanstalkBundle\LeezyPheanstalkBundle(), }
基本用法
简单地扩展 Vivait\WorkerCommandBundle\Command\WorkerCommand
并实现其抽象方法。
class EmailWorkerCommand extends WorkerCommand { protected function performAction($payload, InputInterface $input, OutputInterface $output) { $output->writeln($payload); } protected function setCommandNamespace() { return "vivait:queue:worker:email"; } }
执行一些工作
每当有新的作业可用时,将调用 performAction()
方法。应使用此方法执行工作进程的任务。
使用 setCommandNamespace()
设置命令的名称。
运行命令
只要此类位于您的应用程序的 Command
目录中,Symfony 应该会自动检测它。运行 php app/console
查看可用命令列表。
要在终端中运行上述类中定义的命令,请运行 php app/console vivait:queue:worker:email
。
参数
上述命令必须提供 tube
参数,例如,php app/console vivait:queue:worker:email "vivait.myapp.email"
可选地,可以设置 ignore
参数以指定忽略的 tube。
选项
--timeout
将设置命令运行的间隔,默认设置为 5 秒。
例如,php app/console vivait:queue:worker:email -t 0.5
异常处理
WorkerCommand 捕获任何 \Exception
。内部,WorkerCommand 将错误消息和代码打印到控制台,但通过实现 handleException()
,可以进一步与异常交互。