【问题标题】:Laravel 5.2 Queue Using DatabaseLaravel 5.2 使用数据库的队列
【发布时间】:2017-11-18 06:27:33
【问题描述】:

从一个控制器,我派出一个工作来发送一封欢迎电子邮件,使用

$this->dispatch(new SendWelcomeEmail($user));

SendWelcomeEmail 我正在做的工作

public function handle(Mailer $mailer)
{
    $mailer->send('emails.welcome', ['data' => 'data'], function ($m) {
        $m->from('noreply@gmail.com', 'Noreply');
        $m->to('xyz@live.com', 'xyz')->subject('Welcome');
    });
}

我的 .env 文件配置为

QUEUE_DRIVER=database
MAIL_DRIVER=smtp
MAIL_HOST=email-smtp.us-east-1.amazonaws.com
MAIL_PORT=587
MAIL_USERNAME=*access*
MAIL_PASSWORD=*key*
MAIL_ENCRYPTION=tls

已检查:

  • 数据库迁移 - “作业”表
  • 使用php artisan queue:listen 在作业调度触发器之前运行队列侦听器

问题:作业已加载到数据库中的“作业”表中,但未处理。但是当我更新队列驱动器时,这工作完全正常。

QUEUE_DRIVER=sync

我在这里错过了什么?

【问题讨论】:

  • 同步驱动程序工作的原因是因为作业立即使用该驱动程序集进行处理,实际上没有与“队列”交互,因为它都是同步的。就异常而言,是否有任何东西被注销?超时?
  • 你运行了 php artisan queue:work
  • 是的 - 这是记录的错误。 - local.ERROR:异常“ErrorException”,消息“stream_socket_enable_crypto():SSL 操作失败,代码为 1。OpenSSL 错误消息:错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败”

标签: php laravel laravel-5.2 laravel-artisan


【解决方案1】:

你的工作在班级中是否具有以下特点?

use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

并实施:

ShouldQueue

【讨论】:

  • 实现 ShouldQueue - 是的,使用 InteractsWithQueue,SerializesModels - 仅
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-01
  • 2017-06-10
  • 2017-05-10
  • 2016-08-22
  • 2016-06-05
  • 2018-10-05
  • 1970-01-01
相关资源
最近更新 更多