生成为 Laravel 作业队列创建表的迁移?

Posted

技术标签:

【中文标题】生成为 Laravel 作业队列创建表的迁移?【英文标题】:Generate migration that creates table for Laravel jobs queue? 【发布时间】:2019-01-23 19:52:40 【问题描述】:

我正在尝试设置一个表以便在 Laravel 中异步执行作业。我已经编写了作业类并且可以分派它。但是它是同步调度的。

遵循documentation 当我尝试使用php artisan queue:table 创建迁移时,我收到以下错误:

[Symfony\Component\Console\Exception\CommandNotFoundException]     
Command "queue:table" is not defined.                             
Did you mean one of these?                                      
queue:failed                                                
queue:work                                                  
queue:restart                                               
queue:listen                                                
queue:retry                                                 
queue:forget                                                
queue:flush

我注意到我最初在 config 目录中没有 queue.php 文件,所以我添加了 repository 中的一个并将 'default' => env('QUEUE_DRIVER', 'sync') 更改为 'default' => env('QUEUE_DRIVER', 'database'),

我还在 .env 文件中将 QUEUE_DRIVER=sync 更改为 QUEUE_DRIVER=database

我是 Laravel 工作队列的新手,所以我不确定我错过了什么。如何创建迁移以利用数据库队列驱动程序?

更新: 我最终只是在 postgres db 中创建了一个作业表,我按照Lumen documentation 中描述的结构使用我的其余数据并使用它来存储作业,但仍然很好奇为什么queue:table 函数不可用.

Laravel 框架版本 Lumen (5.3.3)(Laravel Components 5.3.*)

【问题讨论】:

而不是自己做。您可以为此目的使用 laravel 的 Horizo​​n(laravel.com/docs/5.6/horizon)。但是,如果您学习如何手动使用它们会很好。如果可以,请更新 laravek 版本。 5.3 现在太旧了 @TimLewis 我有,只是使用了错误的链接,已更新。 没问题;就在我第一次读到你的问题时,它作为一个危险信号向我跳了出来;错误的版本等。我可以看到它不是,所以可能与 Lumen vs Laravel 有关? @TimLewis 无论哪种方式都很好。啊,你对 Lumen 的看法可能是对的。 只是猜测。恐怕我从未使用过 Lumen,但如果该功能可用,您应该能够在自己的自定义命令中模仿该过程;只需查看queue:table 命令的作用并复制到您自己的。 【参考方案1】:
php artisan queue:table 

这个命令是对的,但是在 .env 文件中设置了 QUEUE_DRIVER=database 并在工作中检查

class TempleteEmailJob implements ShouldQueue

创建迁移需要实现 ShouldQueue

然后 php artisan 迁移

【讨论】:

以上是关于生成为 Laravel 作业队列创建表的迁移?的主要内容,如果未能解决你的问题,请参考以下文章

laravel中的数据迁移和数据填充

Laravel使用数据库队列给用户发送通知

Laravel使用数据库队列给用户发送通知

如何指定Laravel用于迁移表的数据库连接?

Laravel 队列 - 作业之间暂停

Laravel 如何创建数据透视表?