# laravel-queue-cmq **Repository Path**: freyo/laravel-queue-cmq ## Basic Information - **Project Name**: laravel-queue-cmq - **Description**: Tencent Cloud Message Queue driver for Laravel Queue - **Primary Language**: PHP - **License**: MIT - **Default Branch**: master - **Homepage**: https://cloud.tencent.com/product/cmq - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 2 - **Created**: 2018-06-16 - **Last Updated**: 2025-07-30 ## Categories & Tags **Categories**: message-server **Tags**: None ## README

Tencent Cloud Message Queue Driver for Laravel Queue

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

FOSSA Status

## Installation ```shell composer require freyo/laravel-queue-cmq ``` ## Configure **Laravel 5.5+ uses Package Auto-Discovery, so doesn't require you to manually add the ServiceProvider.** 1. `config/app.php`: ```php 'providers' => [ // ... Freyo\LaravelQueueCMQ\LaravelQueueCMQServiceProvider::class, ] ``` 2. `.env`: ``` QUEUE_DRIVER=cmq CMQ_SECRET_KEY= CMQ_SECRET_ID= CMQ_QUEUE_HOST=https://cmq-queue-{region}.api.qcloud.com CMQ_QUEUE=queue_name #default queue name CMQ_QUEUE_POLLING_WAIT_SECONDS=0 CMQ_TOPIC_ENABLE=false # set to true to use topic CMQ_TOPIC_FILTER=routing # or msgtag CMQ_TOPIC_HOST=https://cmq-topic-{region}.api.qcloud.com CMQ_TOPIC=topic_name ``` #### Tips - Region should be replaced with a specific region: gz (Guangzhou), sh (Shanghai), or bj (Beijing). - Domain for public network API request: cmq-queue-region.api.qcloud.com / cmq-topic-region.api.qcloud.com - Domain for private network API request: cmq-queue-region.api.tencentyun.com / cmq-topic-region.api.tencentyun.com ## Usage Once you completed the configuration you can use Laravel Queue API. If you used other queue drivers you do not need to change anything else. If you do not know how to use Queue API, please refer to the official Laravel documentation: http://laravel.com/docs/queues ### Example #### Dispatch Jobs The default connection name is `cmq` ```php //use queue only Job::dispatch()->onConnection('connection-name')->onQueue('queue-name'); // or dispatch((new Job())->onConnection('connection-name')->onQueue('queue-name')) //use topic and tag filter Job::dispatch()->onConnection('connection-name')->onQueue('tag1,tag2,tag3'); // or dispatch((new Job())->onConnection('connection-name')->onQueue('tag1,tag2,tag3')) //use topic and routing filter Job::dispatch()->onConnection('connection-name')->onQueue('routing-key'); // or dispatch((new Job())->onConnection('connection-name')->onQueue('routing-key')) ``` #### Multiple Queues Configure `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 seconds 'retries' => 3, ], 'topic' => [ 'enable' => false, 'filter' => 'routing', // routing or msgtag 'host' => 'https://cmq-topic-region.api.qcloud.com', 'name' => 'your-topic-name', 'retries' => 3, ], ], 'plain' => [ 'enable' => false, 'job' => 'App\Jobs\CMQPlainJob@handle', ], ]; //... ]; ``` #### Process Jobs ```bash php artisan queue:work {connection-name} --queue={queue-name} ``` #### Plain Mode Configure `.env` ``` CMQ_PLAIN_ENABLE=true CMQ_PLAIN_JOB=App\Jobs\CMQPlainJobHandler@handle ``` Create a job implements `PlainPayload` interface. The method `getPayload` must return a sting value. ```php payload = $payload; } /** * Get the plain payload of the job. * * @return string */ public function getPayload() { return $this->payload; } } ``` Create a plain job handler ```php release(); // delete message when processed. if (! $job->isDeletedOrReleased()) { $job->delete(); } } } ``` ## References - [Product Documentation](https://intl.cloud.tencent.com/document/product/406) ## License The MIT License (MIT). Please see [License File](LICENSE) for more information. [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Ffreyo%2Flaravel-queue-cmq.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Ffreyo%2Flaravel-queue-cmq?ref=badge_large)