1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/freyo-laravel-queue-cmq

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Драйвер очередей Tencent Cloud Message Queue для Laravel Queue

Software License Build Status Coverage Status Quality Score Packagist Version Total Downloads

FOSSA Status

Установка

composer require freyo/laravel-queue-cmq

Настройка

Laravel 5.5+ использует автоматическое обнаружение пакетов, поэтому вам не нужно вручную добавлять ServiceProvider.

  1. config/app.php:
'providers' => [
  // ...
  Freyo\LaravelQueueCMQ\LaravelQueueCMQServiceProvider::class,
]
  1. .env:
QUEUE_DRIVER=cmq

CMQ_SECRET_KEY=
CMQ_SECRET_ID=

CMQ_QUEUE_HOST=https://cmq-queue-{region}.api.qcloud.com
CMQ_QUEUE=queue_name # имя очереди по умолчанию
CMQ_QUEUE_POLLING_WAIT_SECONDS=0
```CMQ_TOPIC_ENABLE=false # Установите значение в true для использования темы
CMQ_TOPIC_FILTER=routing # или msgtag
CMQ_TOPIC_HOST=https://cmq-topic-{region}.api.qcloud.com
CMQ_TOPIC=topic_name

Советы

  • Регион должен быть заменен на конкретный регион: gz (Гуанчжоу), sh (Шанхай) или bj (Пекин).

  • Домен для запросов API через публичную сеть: cmq-queue-region.api.qcloud.com / cmq-topic-region.api.qcloud.com

  • Домен для запросов API через приватную сеть: cmq-queue-region.api.tencentyun.com / cmq-topic-region.api.tencentyun.com

Использование

После завершения конфигурации вы можете использовать API очередей Laravel. Если вы использовали другие драйверы очередей, ничего больше менять не требуется. Если вы не знаете, как использовать Queue API, обратитесь к официальной документации Laravel: http://laravel.com/docs/queues

Пример

Отправка задач

Имя по умолчанию для соединения — cmq

// использование только очереди
Job::dispatch()->onConnection('connection-name')->onQueue('queue-name');
// или dispatch((new Job())->onConnection('connection-name')->onQueue('queue-name'))

// использование темы и фильтра тегов
Job::dispatch()->onConnection('connection-name')->onQueue('tag1,tag2,tag3');
// или dispatch((new Job())->onConnection('connection-name')->onQueue('tag1,tag2,tag3'))

// использование темы и фильтра маршрутизации
Job::dispatch()->onConnection('connection-name')->onQueue('routing-key');
// или dispatch((new Job())->onConnection('connection-name')->onQueue('routing-key'))

Несколько очередей

Настройте `config/queue.php````php 'connections' => [ //... 'new-connection-name' => [ 'driver' => 'cmq', 'secret_key' => 'your-secret-key', 'secret_id' => 'your-secret-id', 'queue' => 'your-queue-name', 'options' => [ 'queue' => [ 'host' => 'https://cmq-queue-region.api.qcloud.com', 'name' => 'your-queue-name', 'polling_wait_seconds' => 0, // 0-30 секунд 'retries' => 3, ], 'topic' => [ 'enable' => false, 'filter' => 'routing', // routing или msgtag 'host' => 'https://cmq-topic-region.api.qcloud.com', 'name' => 'your-topic-name', 'retries' => 3, ], ], 'plain' => [ 'enable' => false, 'job' => 'App\Jobs\CMQPlainJob@handle', ], ], //... ];


```bash
php artisan queue:work {connection-name} --queue={queue-name}

Режим Plain

Настройте .env

CMQ_PLAIN_ENABLE=true
CMQ_PLAIN_JOB=App\Jobs\CMQPlainJobHandler@handle

Создайте задачу, реализующую интерфейс PlainPayload. Метод getPayload должен возвращать строковое значение.

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Freyo\LaravelQueueCMQ\Queue\Contracts\PlainPayload;

class CMQPlainJob implements ShouldQueue, PlainPayload
{
    use Dispatchable, InteractsWithQueue, Queueable;
    
    protected $payload;

    /**
     * Создает новый экземпляр задачи.
     *
     * @param string $payload
     */
    public function __construct($payload)
    {
        $this->payload = $payload;
    }
    
    /**
     * Получает простой пейлоад задачи.
     *
     * @return string
     */
    public function getPayload()
    {
        return $this->payload;
    }
}

Создайте обработчик простой задачи

<?php

namespace App\Jobs;

use Illuminate\Queue\Jobs\Job;

class CMQPlainJobHandler
{
    /**
     * Выполняет задачу.
     * 
     * @param \Illuminate\Queue\Jobs\Job $job
     * @param string $payload
     * 
     * @return void
     */
    public function handle(Job $job, $payload)
    {
        // обработка вашего пейлоада...
        var_dump($payload);
        
        // возврат в очередь при неудаче.
        // $job->release();
        
        // удаление сообщения после обработки.
        if (! $job->isDeletedOrReleased()) {
            $job->delete();
        }        
    }
}

Ссылки

Лицензия

Лицензия MIT. Дополнительную информацию см. В файле лицензии.

FOSSA Статус

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Драйвер очереди сообщений Tencent Cloud для очереди Laravel. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Язык

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/freyo-laravel-queue-cmq.git
git@api.gitlife.ru:oschina-mirror/freyo-laravel-queue-cmq.git
oschina-mirror
freyo-laravel-queue-cmq
freyo-laravel-queue-cmq
master