1

thinkphp 使用 laravel-queue 组建出现的问题

 2 years ago
source link: https://www.v2ex.com/t/795874
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

V2EX  ›  PHP

thinkphp 使用 laravel-queue 组建出现的问题

  awanganddong · 6 小时 16 分钟前 · 193 次点击
       //laravel 框架队列引入
        $queue = new Queue();
        $container = $queue->getContainer();
        $config = [
            'options' => [
                'prefix' => 'laravel_database_'
            ],
            'default' => [
                'host' => \think\facade\Config::get('cache.redis.host', ''),
                'password' => \think\facade\Config::get('cache.redis.password', ''),
                'port' => \think\facade\Config::get('cache.redis.port', ''),
                'database' => 0,
            ],
        ];
        $container->bind("redis", function ($container) use ($config) {
            return new RedisManager($container, 'predis', $config);
        });
        $queue->getContainer()->bind('Illuminate\Contracts\Queue\EntityResolver', function () {
            return new \Illuminate\Database\Eloquent\QueueEntityResolver();
        });
        $queue->addConnection([
            'driver' => 'redis',
            'connection' => 'default',
            'queue' => 'default',
            'retry_after' => 90,
            'block_for' => null,
        ]);
        $queue->setAsGlobal();
        //laravel 框架队列结束
        $data = json_encode(['name' => 'aa']);
        $ret = $queue->push('App\Jobs\TestJobs', $data);

以上操作可以在 tp 把项目推送到 redis 上边,但是出现以下问题。应该是那个服务没有注册

Illuminate\Contracts\Container\BindingResolutionException: Unresolvable dependency resolving [Parameter #0 [ <required> $data ]] in class App\Jobs\TestJobs in /vendor/laravel/framework/src/Illuminate/Container/Container.php:993
Stack trace:
#0 /vendor/laravel/framework/src/Illuminate/Container/Container.php(931): Illuminate\Container\Container->unresolvablePrimitive(Object(ReflectionParameter))
#1 /vendor/laravel/framework/src/Illuminate/Container/Container.php(872): Illuminate\Container\Container->resolvePrimitive(Object(ReflectionParameter))
#2 /vendor/laravel/framework/src/Illuminate/Container/Container.php(834): Illuminate\Container\Container->resolveDependencies(Array)
#3 /vendor/laravel/framework/src/Illuminate/Container/Container.php(681): Illuminate\Container\Container->build('App\\Jobs\\TestJo...')
#4 /www/walle/bitian_queue/8_989_20210815_104701/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(785): Illuminate\Container\Container->resolve('App\\Jobs\\TestJo...', Array, true)
#5 /vendor/laravel/framework/src/Illuminate/Container/Container.php(629): Illuminate\Foundation\Application->resolve('App\\Jobs\\TestJo...', Array)
#6 /vendor/laravel/framework/src/Illuminate/Foundation/Application.php(770): Illuminate\Container\Container->make('App\\Jobs\\TestJo...', Array)
#7 /vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(215): Illuminate\Foundation\Application->make('App\\Jobs\\TestJo...')
#8 /vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(88): Illuminate\Queue\Jobs\Job->resolve('App\\Jobs\\TestJo...')
#9 /vendor/laravel/framework/src/Illuminate/Queue/Worker.php(368): Illuminate\Queue\Jobs\Job->fire()
#10/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(314): Illuminate\Queue\Worker->process('redis', Object(Illuminate\Queue\Jobs\RedisJob), Object(Illuminate\Queue\WorkerOptions))
#11 /vendor/laravel/framework/src/Illuminate/Queue/Worker.php(134): Illuminate\Queue\Worker->runJob(Object(Illuminate\Queue\Jobs\RedisJob), 'redis', Object(Illuminate\Queue\WorkerOptions))
#12 /vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(112): Illuminate\Queue\Worker->daemon('redis', 'high,default', Object(Illuminate\Queue\WorkerOptions))
#13 /vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(96): Illuminate\Queue\Console\WorkCommand->runWorker('redis', 'high,default')
#14 /vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\Queue\Console\WorkCommand->handle()
#15 /vendor/laravel/framework/src/Illuminate/Container/Util.php(37): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#16 /vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\Container\Util::unwrapIfClosure(Object(Closure))
#17 /vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#18 /vendor/laravel/framework/src/Illuminate/Container/Container.php(590): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
#19 /vendor/laravel/framework/src/Illuminate/Console/Command.php(134): Illuminate\Container\Container->call(Array)
#20 /vendor/symfony/console/Command/Command.php(255): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#21 /vendor/laravel/framework/src/Illuminate/Console/Command.php(121): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#22 /vendor/symfony/console/Application.php(1009): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#23 /vendor/symfony/console/Application.php(273): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Queue\Console\WorkCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#24 /vendor/symfony/console/Application.php(149): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#25 /vendor/laravel/framework/src/Illuminate/Console/Application.php(93): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#26 /vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(131): Illuminate\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#27/artisan(37): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#28 {main}

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK