Giter Site home page Giter Site logo

freyo / laravel-queue-cmq Goto Github PK

View Code? Open in Web Editor NEW
26.0 2.0 9.0 123 KB

📦 Tencent Cloud Message Queue driver for Laravel Queue

Home Page: https://intl.cloud.tencent.com/product/cmq

License: MIT License

PHP 100.00%
cmq laravel-queues laravel php cmq-queue cmq-topic queue-drivers

laravel-queue-cmq's Introduction

Tencent Cloud Message Queue Driver for Laravel Queue

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

FOSSA Status

Installation

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:
'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 #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

//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

'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

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

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;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($payload)
    {
        $this->payload = $payload;
    }
    
    /**
     * Get the plain payload of the job.
     *
     * @return string
     */
    public function getPayload()
    {
        return $this->payload;
    }
}

Create a plain job handler

<?php

namespace App\Jobs;

use Illuminate\Queue\Jobs\Job;

class CMQPlainJobHandler
{
    /**
     * Execute the job.
     * 
     * @param \Illuminate\Queue\Jobs\Job $job
     * @param string $payload
     * 
     * @return void
     */
    public function handle(Job $job, $payload)
    {
        // processing your payload...
        var_dump($payload);
        
        // release back to the queue manually when failed.
        // $job->release();
        
        // delete message when processed.
        if (! $job->isDeletedOrReleased()) {
            $job->delete();
        }        
    }
}

References

License

The MIT License (MIT). Please see License File for more information.

FOSSA Status

laravel-queue-cmq's People

Contributors

327 avatar fossabot avatar freyo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

laravel-queue-cmq's Issues

CMQ多个队列支持

作者您好,如果我需要从 CMQ 的多个队列中获取数据,在配置文件中CMQ_QUEUE 配置项该怎么填写?
是否支持多个队列?

Nonce 重复导致请求失败

之前跟腾讯云确认过,他们 PHP SDK 有个 bug,当 Nonce 值相同时,CMQ Server 会认为是重复请求。所以调整 Nonce 的生成规则,防止在大并发请求下,Nonce 值重复

image

消费队列时异常

当从队列获取数据时,发生如下报错信息:
Unresolvable dependency resolving [Parameter #0 [ $host ]] in class Freyo\LaravelQueueCMQ\Queue\Driver\Account

背景:
发生这种错误是通过这种方式创建的 job:

dispatch((new AttendanceJob($user->uid, $date))->onConnection('cmq')->onQueue('attendance'));

如果是自己通过 CMQ 的 Http API 创建的 job, 不会遇到这种情况

laravel 版本依赖说明

请问这个项目各个版本的 Release ,分别支持哪个版本的 laravel?

例如 laravel 5.5 最高使用 freyo/laravel-queue-cmq 5.7 还是 5.8 ?

Pop the next job off of the queue.

`/**
* Pop the next job off of the queue.
*
* @param string $queue
*
* @return \Illuminate\Contracts\Queue\Job|null
*/
public function pop($queue = null)
{
try {
$queue = $this->getQueue($queue);
$message = $queue->receive_message($this->queueOptions['polling_wait_seconds']);
} catch (CMQServerException $e) {
if ($e->getCode() == self::CMQ_QUEUE_NO_MESSAGE_CODE) { //ignore no message
return null;
}
throw $e;
}

    return new CMQJob($this->container, $this, $message, $queue);
}`

请问这个$this->container应该传什么值

Class 'Freyo\LaravelQueueCMQ\Queue\Driver\Message' not found

版本是 5.7.4.1 请问这是什么原因?
Class 'Freyo\LaravelQueueCMQ\Queue\Driver\Message' not found in /data/wwwroot/test.linde.smartlink.aidong.ai/vendor/freyo/laravel-queue-cmq/src/Queue/Driver/Queue.php:259 Stack trace: #0 /data/wwwroot/test.linde.smartlink.aidong.ai/vendor/freyo/laravel-queue-cmq/src/Queue/CMQQueue.php(159): Freyo\LaravelQueueCMQ\Queue\Driver\Queue->receive_message('1') #1 /data/wwwroot/test.linde.smartlink.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(241): Freyo\LaravelQueueCMQ\Queue\CMQQueue->pop(Object(Freyo\LaravelQueueCMQ\Queue\Driver\Queue)) #2 /data/wwwroot/test.linde.smartlink.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(104): Illuminate\Queue\Worker->getNextJob(Object(Freyo\LaravelQueueCMQ\Queue\CMQQueue), 'test-mse') #3 /data/wwwroot/test.linde.smartlink.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(101): Illuminate\Queue\Worker->daemon('cmq', 'test-mse', Object(Illuminate\Queue\WorkerOptions)) #4 /data/wwwroot/test.linde.smartlink.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(85): Illuminate\Queue\Console\WorkCommand->runWorker('cmq', 'test-mse') #5 [internal function]: Illuminate\Queue\Console\WorkCommand->fire() #6 /data/wwwroot/test.linde.smartlink.aidong.ai/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(29): call_user_func_array(Array, Array) #7 /data/wwwroot/test.linde.smartlink.aidong.ai/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(87): Illuminate\Container\BoundMethod::Illuminate\Container{closure}() #8 /data/wwwroot/test.linde.smartlink.aidong.ai/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(31): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure)) #9 /data/wwwroot/test.linde.smartlink.aidong.ai/vendor/laravel/framework/src/Illuminate/Container/Container.php(539): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL) #10 /data/wwwroot/test.linde.smartlink.aidong.ai/vendor/laravel/framework/src/Illuminate/Console/Command.php(182): Illuminate\Container\Container->call(Array) #11 /data/wwwroot/test.linde.smartlink.aidong.ai/vendor/symfony/console/Command/Command.php(255): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle)) #12 /data/wwwroot/test.linde.smartlink.aidong.ai/vendor/laravel/framework/src/Illuminate/Console/Command.php(167): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle)) #13 /data/wwwroot/test.linde.smartlink.aidong.ai/vendor/symfony/console/Application.php(969): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #14 /data/wwwroot/test.linde.smartlink.aidong.ai/vendor/symfony/console/Application.php(255): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Queue\Console\WorkCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #15 /data/wwwroot/test.linde.smartlink.aidong.ai/vendor/symfony/console/Application.php(148): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #16 /data/wwwroot/test.linde.smartlink.aidong.ai/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(122): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #17 /data/wwwroot/test.linde.smartlink.aidong.ai/artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #18 {main} [] []

logFailedJob

今天发现部分 JOB 处理失败后,laravel-CMQ 尝试记录此 JOB 到数据库,信息如下:
PDOException: SQLSTATE[HY000] [2002] No such file or directory in /data/wwwroot/sdgroup.aidong.ai/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:46 Stack trace: #0 /data/wwwroot/sdgroup.aidong.ai/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php(46): PDO->__construct('mysql:host=loca...', 'forge', '', Array) #1 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php(65): Doctrine\DBAL\Driver\PDOConnection->__construct('mysql:host=loca...', 'forge', '', Array) #2 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php(44): Illuminate\Database\Connectors\Connector->createPdoConnection('mysql:host=loca...', 'forge', '', Array) #3 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php(24): Illuminate\Database\Connectors\Connector->createConnection('mysql:host=loca...', Array, Array) #4 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php(183): Illuminate\Database\Connectors\MySqlConnector->connect(Array) #5 [internal function]: Illuminate\Database\Connectors\ConnectionFactory->Illuminate\Database\Connectors\{closure}() #6 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Connection.php(883): call_user_func(Object(Closure)) #7 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Connection.php(445): Illuminate\Database\Connection->getPdo() #8 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Connection.php(640): Illuminate\Database\Connection->Illuminate\Database\{closure}('insert into fa...', Array) #9 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Connection.php(607): Illuminate\Database\Connection->runQueryCallback('insert into fa...', Array, Object(Closure)) #10 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Connection.php(450): Illuminate\Database\Connection->run('insert into fa...', Array, Object(Closure)) #11 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Connection.php(404): Illuminate\Database\Connection->statement('insert into fa...', Array) #12 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Query/Processors/Processor.php(32): Illuminate\Database\Connection->insert('insert into fa...', Array) #13 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2133): Illuminate\Database\Query\Processors\Processor->processInsertGetId(Object(Illuminate\Database\Query\Builder), 'insert into fa...', Array, NULL) #14 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Failed/DatabaseFailedJobProvider.php(62): Illuminate\Database\Query\Builder->insertGetId(Array) #15 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(187): Illuminate\Queue\Failed\DatabaseFailedJobProvider->log('cmq', 'watch-gps', '{"displayName":...', 'Illuminate\\Queu...') #16 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(137): Illuminate\Queue\Console\WorkCommand->logFailedJob(Object(Illuminate\Queue\Events\JobFailed)) #17 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(348): Illuminate\Queue\Console\WorkCommand->Illuminate\Queue\Console\{closure}(Object(Illuminate\Queue\Events\JobFailed)) #18 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(199): Illuminate\Events\Dispatcher->Illuminate\Events\{closure}('Illuminate\\Queu...', Array) #19 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(172): Illuminate\Events\Dispatcher->dispatch('Illuminate\\Queu...', Array, false) #20 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/FailingJob.php(36): Illuminate\Events\Dispatcher->fire(Object(Illuminate\Queue\Events\JobFailed)) #21 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(420): Illuminate\Queue\FailingJob::handle('cmq', Object(Freyo\LaravelQueueCMQ\Queue\Jobs\CMQJob), Object(Illuminate\Queue\MaxAttemptsExceededException)) #22 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(386): Illuminate\Queue\Worker->failJob('cmq', Object(Freyo\LaravelQueueCMQ\Queue\Jobs\CMQJob), Object(Illuminate\Queue\MaxAttemptsExceededException)) #23 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(311): Illuminate\Queue\Worker->markJobAsFailedIfAlreadyExceedsMaxAttempts('cmq', Object(Freyo\LaravelQueueCMQ\Queue\Jobs\CMQJob), 3) #24 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(267): Illuminate\Queue\Worker->process('cmq', Object(Freyo\LaravelQueueCMQ\Queue\Jobs\CMQJob), Object(Illuminate\Queue\WorkerOptions)) #25 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(113): Illuminate\Queue\Worker->runJob(Object(Freyo\LaravelQueueCMQ\Queue\Jobs\CMQJob), 'cmq', Object(Illuminate\Queue\WorkerOptions)) #26 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(101): Illuminate\Queue\Worker->daemon('cmq', 'watch-gps', Object(Illuminate\Queue\WorkerOptions)) #27 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(85): Illuminate\Queue\Console\WorkCommand->runWorker('cmq', 'watch-gps') #28 [internal function]: Illuminate\Queue\Console\WorkCommand->fire() #29 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(29): call_user_func_array(Array, Array) #30 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(87): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}() #31 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(31): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure)) #32 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Container/Container.php(539): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL) #33 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Console/Command.php(182): Illuminate\Container\Container->call(Array) #34 /data/wwwroot/sdgroup.aidong.ai/vendor/symfony/console/Command/Command.php(251): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle)) #35 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Console/Command.php(167): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle)) #36 /data/wwwroot/sdgroup.aidong.ai/vendor/symfony/console/Application.php(946): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #37 /data/wwwroot/sdgroup.aidong.ai/vendor/symfony/console/Application.php(248): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Queue\Console\WorkCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #38 /data/wwwroot/sdgroup.aidong.ai/vendor/symfony/console/Application.php(148): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #39 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(122): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #40 /data/wwwroot/sdgroup.aidong.ai/artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #41 {main} Next Doctrine\DBAL\Driver\PDOException: SQLSTATE[HY000] [2002] No such file or directory in /data/wwwroot/sdgroup.aidong.ai/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:50 Stack trace: #0 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php(65): Doctrine\DBAL\Driver\PDOConnection->__construct('mysql:host=loca...', 'forge', '', Array) #1 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php(44): Illuminate\Database\Connectors\Connector->createPdoConnection('mysql:host=loca...', 'forge', '', Array) #2 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php(24): Illuminate\Database\Connectors\Connector->createConnection('mysql:host=loca...', Array, Array) #3 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php(183): Illuminate\Database\Connectors\MySqlConnector->connect(Array) #4 [internal function]: Illuminate\Database\Connectors\ConnectionFactory->Illuminate\Database\Connectors\{closure}() #5 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Connection.php(883): call_user_func(Object(Closure)) #6 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Connection.php(445): Illuminate\Database\Connection->getPdo() #7 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Connection.php(640): Illuminate\Database\Connection->Illuminate\Database\{closure}('insert into fa...', Array) #8 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Connection.php(607): Illuminate\Database\Connection->runQueryCallback('insert into fa...', Array, Object(Closure)) #9 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Connection.php(450): Illuminate\Database\Connection->run('insert into fa...', Array, Object(Closure)) #10 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Connection.php(404): Illuminate\Database\Connection->statement('insert into fa...', Array) #11 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Query/Processors/Processor.php(32): Illuminate\Database\Connection->insert('insert into fa...', Array) #12 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2133): Illuminate\Database\Query\Processors\Processor->processInsertGetId(Object(Illuminate\Database\Query\Builder), 'insert into fa...', Array, NULL) #13 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Failed/DatabaseFailedJobProvider.php(62): Illuminate\Database\Query\Builder->insertGetId(Array) #14 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(187): Illuminate\Queue\Failed\DatabaseFailedJobProvider->log('cmq', 'watch-gps', '{"displayName":...', 'Illuminate\\Queu...') #15 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(137): Illuminate\Queue\Console\WorkCommand->logFailedJob(Object(Illuminate\Queue\Events\JobFailed)) #16 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(348): Illuminate\Queue\Console\WorkCommand->Illuminate\Queue\Console\{closure}(Object(Illuminate\Queue\Events\JobFailed)) #17 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(199): Illuminate\Events\Dispatcher->Illuminate\Events\{closure}('Illuminate\\Queu...', Array) #18 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(172): Illuminate\Events\Dispatcher->dispatch('Illuminate\\Queu...', Array, false) #19 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/FailingJob.php(36): Illuminate\Events\Dispatcher->fire(Object(Illuminate\Queue\Events\JobFailed)) #20 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(420): Illuminate\Queue\FailingJob::handle('cmq', Object(Freyo\LaravelQueueCMQ\Queue\Jobs\CMQJob), Object(Illuminate\Queue\MaxAttemptsExceededException)) #21 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(386): Illuminate\Queue\Worker->failJob('cmq', Object(Freyo\LaravelQueueCMQ\Queue\Jobs\CMQJob), Object(Illuminate\Queue\MaxAttemptsExceededException)) #22 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(311): Illuminate\Queue\Worker->markJobAsFailedIfAlreadyExceedsMaxAttempts('cmq', Object(Freyo\LaravelQueueCMQ\Queue\Jobs\CMQJob), 3) #23 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(267): Illuminate\Queue\Worker->process('cmq', Object(Freyo\LaravelQueueCMQ\Queue\Jobs\CMQJob), Object(Illuminate\Queue\WorkerOptions)) #24 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(113): Illuminate\Queue\Worker->runJob(Object(Freyo\LaravelQueueCMQ\Queue\Jobs\CMQJob), 'cmq', Object(Illuminate\Queue\WorkerOptions)) #25 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(101): Illuminate\Queue\Worker->daemon('cmq', 'watch-gps', Object(Illuminate\Queue\WorkerOptions)) #26 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(85): Illuminate\Queue\Console\WorkCommand->runWorker('cmq', 'watch-gps') #27 [internal function]: Illuminate\Queue\Console\WorkCommand->fire() #28 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(29): call_user_func_array(Array, Array) #29 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(87): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}() #30 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(31): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure)) #31 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Container/Container.php(539): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL) #32 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Console/Command.php(182): Illuminate\Container\Container->call(Array) #33 /data/wwwroot/sdgroup.aidong.ai/vendor/symfony/console/Command/Command.php(251): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle)) #34 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Console/Command.php(167): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle)) #35 /data/wwwroot/sdgroup.aidong.ai/vendor/symfony/console/Application.php(946): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #36 /data/wwwroot/sdgroup.aidong.ai/vendor/symfony/console/Application.php(248): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Queue\Console\WorkCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #37 /data/wwwroot/sdgroup.aidong.ai/vendor/symfony/console/Application.php(148): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #38 /data/wwwroot/sdgroup.aidong.ai/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(122): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #39 /data/wwwroot/sdgroup.aidong.ai/artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #40 {main} [] []

当 job 处理成功的情况下,我才会 调用 job->delete(). 等设置的沉默时间到期后,会再次处理此 job,在这种情况下,是否可以关闭 laravel 框架记录失败 job 的功能?如果可以的话,请指点下如何关闭。
多谢

需要允许通过配置设置poll的时长

我的后台只启动了一个worker,监听了5个队列。如果消息队列里没有消息的时候,worker会超时。抓包看了下,因为代码里设置了polling的值为30秒,所以每一个队列在监听的时候都要等30秒。一个worker监听的队列过多的时候就会超时。

针对我们这样只有一个worker同时监听多个队列的,polling时长设置为30秒不是特别合理。5个队列要2分钟才能轮一圈。建议可以通过配置修改pollingWaitSeconds。

不能支持laravel 5.2的版本

不能支持laravel/lumen 5.2的版本,为了使用这个扩展不得不把框架从5.2升级到5.4+,成本有点高。能否加上5.2的支持?谢谢!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.