brezgalov/yii2-amq-workers-manager 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

brezgalov/yii2-amq-workers-manager

Composer 安装命令:

composer require brezgalov/yii2-amq-workers-manager

包简介

tool to manage workers form admin panel

README 文档

README

Менаджер работает с драйвером очередей AMQP поэтому кроме "yii2/queue", который есть в зависимостях этого пакета, необходимо так же установить транспорт.

Я рекомендую "enqueue/amqp-lib"

Установка

Установка через composer:

composer require brezgalov/yii2-amq-workers-manager --prefer-dist

Применяем миграции

php yii migrate --migrationPath="vendor/brezgalov/yii2-amq-workers-manager/migrations"

Подключаем компонент в приложении

$config = [
  'bootstrap' => [
    'workersManager',
    'queue',
  ],
  'components' => [
    'workersManager' => WorkersManagerService::class,
    'queue' => [
      'class' => \yii\queue\amqp_interop\Queue::class,
      'host' => '127.0.0.1',
      'port' => 5672,
      'user' => 'guest',
      'password' => 'guest',
      'queueName' => 'test',
    ],
    ...

Применение

В базе данных в таблице workers_configs создаем запись

<queue_component_name: 'queue', workers_count: 1>

Запускаем обработку воркеров через консоль

php yii workers/manage workersManager

Наблюдаем что в таблице workers_statuses появился воркер.

Далее, подключаем команду "workers/manage" в крон/шедулер на интервал подходящий нам

Для того чтобы статус воркеров менялся - периодически опрашиваем их через крон/шедулер командой

php yii workers/check

Все! Теперь при изменении количества воркеров в бд, менаджер автоматически остановит/запустит воркеры

Выполнение задач

При создании задач можно использовать класс AbstractJob. Он позволяет задаче принятой на выполнение ставить отметку is_busy в статус воркера. Это позволяет менаджеру видеть воркеры, которые сейчас в работе и не останавливать их, даже если такая необходимость есть (остановит когда воркер будет is_busy = 0)

Например:

class TestPlaceholderJob extends AbstractJob implements JobInterface
{
    /**
    * @var int
    */
    public $sleep = 10;

    /**
     * @param \yii\queue\Queue $queue
     * @return mixed|void
     */
    public function run($queue)
    {
        sleep($this->sleep);
    }
}

统计信息

  • 总下载量: 7
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-10-14

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固