I am using Laravel 5.8, I configured an email containing the invoice sent to user after they place an order. Email is delivered when set QUEUE_DRIVER=sync
but when I set it to redis/database and I run the php artisan queue:work redis --tries=5
it shows the queue is processed
Processing: Modules\Checkout\Mail\Invoice
Processed: Modules\Checkout\Mail\Invoice
succesfully and no entry in the failed_jobs either.
CODE: Modules\Checkout\Jobs\SendInvoiceEmail.php
class SendInvoiceEmail implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $order;
public function __construct(Order $order)
{
$this->order = $order;
}
public function handle()
{
Mail::to($this->order->customer_email)
->send(new Invoice($this->order));
}
}
And this is the Modules\Checkout\Mail\Invoice.php
class Invoice extends Mailable
{
use Queueable, SerializesModels;
public $order;
public function __construct($order)
{
$this->order = $order;
}
public function build()
{
return $this->subject('New order: ', ['id' => $this->order->id]))
->view("emails.invoice");
}
}
Then I am dispatching it in the Controller after Order created
SendInvoiceEmail::dispatch($order);
Can anyone point out if I've missed anything and what I am doing wrong?
I've done the php artisan config:cache and clear:cache
restarted the server.
This works just as expected if I set QUEUE_DRIVER=sync
in .env instead of QUEUE_DRIVER=redis or database
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire