composer require freyo/laravel-queue-cmq
Laravel 5.5+ использует автоматическое обнаружение пакетов, поэтому вам не нужно вручную добавлять ServiceProvider.
config/app.php
:'providers' => [
// ...
Freyo\LaravelQueueCMQ\LaravelQueueCMQServiceProvider::class,
]
.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}
Настройте .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. Дополнительную информацию см. В файле лицензии.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )