Я занимаюсь разработкой приложения.В котором администратор отправляет уведомления пользователям.Я использовал уведомления очереди laravel 5.8.После генерации уведомлений таблица заданий имеет много строк, но когда я запускаю
php artisan queue:listen --queue=high,medium,default
, она просто отправляет только одно уведомление.
Моя конфигурация указана ниже:
- .env: QUEUE_CONNECTION = база данных
- config / queue.php:
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => ['default','medium','high'],
'retry_after' => 90,
],
NotificationGeneratingController:
$data = new \stdClass();
$data->message = [
'data' => $request->notification_text
];
$data->via = 'mail';//$request->notification_via;
$receiver = User::all();
Notification::send($receiver,new UserNotificationQueue($data));
Уведомления / UserNotificationQueue.php
<?php
namespace App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Notifications\Messages\MailMessage;
class UserNotificationQueue extends Notification implements ShouldQueue
{
use Queueable,SerializesModels;
/**
* Create a new notification instance.
*
* @return void
*/
protected $message;
protected $notification_via;
public function __construct($data)
{
$this->message = $data->message;
$this->notification_via = $data->via;
$this->onQueue($data->queue ?? 'medium');
}
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
$via = $this->notification_via; // default mail
return [$via];
}
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
return (new MailMessage)
->subject("Notification From: GoGram")
->greeting('Hello '.$notifiable->name)
->line($this->message['data'])
->line('Thank you for using our application!');
}
}
Всегда Отправляет только одно уведомление.Если таблица заданий имеет смешанную очередь, то она просто отправляет первые уведомления с более высоким приоритетом.Также я попробовал, config / queue.php
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default'
'retry_after' => 90,
],
'medium' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'medium',
'retry_after' => 30,
],
'high' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'high',
'retry_after' => 10,
],
Что-то не так?