abc/job-worker-bundle

用于处理来自AbcJobServerBundle的作业的Symfony

0.4.1 2020-12-01 20:08 UTC

This package is not auto-updated.

Last update: 2024-09-18 14:46:44 UTC


README

Build Status

一个用于使用php-enqueue作为传输层的symfony扩展包,用于处理由AbcJobServerBundle管理的作业。

注意:此项目仍处于实验阶段!

演示

您可以在这里找到演示。

安装

composer require abc/job-worker-bundle

配置参考

abc_job_worker:
    server_baseUrl: # Required (e.g. http://domain.tld/api/
    default_queue: default
    default_replyTo: reply

入门指南

先决条件

  1. 已安装AbcJobServerBundle的symfony应用程序
  2. Enqueue传输配置与AbcJobServerBundle配置匹配

创建作业处理器

作业处理器必须实现ProcessorInterface接口。

interface ProcessorInterface
{
    public function process(?string $input, Context $context);
}

注册作业处理器

作业处理器必须使用标签abc.job.processor进行注册。您必须定义标签属性jobName,它定义了必须使用此处理器处理的作业名称。

App\Job\SayHelloProcessor:
    tags:
        - { name: 'abc.job.processor', jobName: 'say_hello'}

配置作业路由

必须为每个作业配置一个路由。路由包含三个参数:name指定作业名称,queue指定作业发送到的队列名称,replyTo指定作业回复发送到的队列名称。

路由由实现RouteProviderInterface接口的类进行配置。

<?php

namespace App;

use Abc\Job\RouteProviderInterface;

class JobRoutes implements RouteProviderInterface
{
    public static function getRoutes()
    {
        return [
            [
                'name' => 'job_A',
                'queue' => 'queue_A',
                'replyTo' => 'reply_default',
            ],
            [
                'name' => 'job_B',
                'queue' => 'queue_B',
                'replyTo' => 'reply_default',
            ],
            [
                'name' => 'job_C',
                'queue' => 'queue_B',
                'replyTo' => 'reply_C',
            ],
        ];
    }
}

必须使用标签abc.job.route_provider注册路由提供者。

App\JobRoutes:
    tags:
        - { name: 'abc.job.route_provider'}

命令

命令abc:job:process

命令abc:job:process处理一个或多个特定的作业,必须指定作业名称。您可以提供单个作业名称或作业名称数组作为参数。

bin/console abc:job:process --help

命令abc:queue:process

命令abc:queue:process处理一个或多个队列的作业。它将处理所有已注册的作业。

bin/console abc:queue:process --help

您可以通过提供单个队列名称或队列名称数组作为参数。

命令abc:routes:register

命令abc:routes:register在服务器上注册由路由提供者定义的路由。现有路由将被覆盖但不会删除。

bin/console abc:routes:register --help

命令abc:broker:setup

命令abc:broker:setup在代理上声明所有注册路由的队列。

bin/console abc:broker:setup --help

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。