2017-06-15 76 views
0

从控制器,我派遣一个工作发送使用Laravel 5.2队列使用数据库

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

欢迎电子邮件在SendWelcomeEmail工作我做

public function handle(Mailer $mailer) 
{ 
    $mailer->send('emails.welcome', ['data' => 'data'], function ($m) { 
     $m->from('[email protected]', 'Noreply'); 
     $m->to('[email protected]', '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

缺少什么我在这里?

+0

同步驱动程序工作的原因是作业立即与该驱动程序集加工,真的有一个“排队”,因为它的所有同步交互。就异常情况而言,是否有任何内容会被注销?超时? – btl

+0

您是否运行过php工匠队列:工作 – lewis4u

+0

是 - 这是记录的错误。 - local.ERROR:异常 'ErrorException' 与消息 'stream_socket_enable_crypto():SSL操作失败,代码1的OpenSSL错误消息: 错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败' –

回答

0

您的工作在课堂上有以下特点吗?

use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; 

并实行:

ShouldQueue 
+0

器具ShouldQueue - 是 使用InteractsWithQueue,SerializesModels - 仅限 –