Laravel 5.8 очередь уведомлений отправляет только одно уведомление - PullRequest
0 голосов
/ 07 апреля 2019

Я занимаюсь разработкой приложения.В котором администратор отправляет уведомления пользователям.Я использовал уведомления очереди laravel 5.8.После генерации уведомлений таблица заданий имеет много строк, но когда я запускаю

php artisan queue:listen --queue=high,medium,default, она просто отправляет только одно уведомление.

Моя конфигурация указана ниже:

  1. .env: QUEUE_CONNECTION = база данных
  2. 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,
         ],

Что-то не так?

...