为什么通知在没有实现 ShouldQueue 的情况下在 redis 中排队?

Why Notification is queued in redis without implements ShouldQueue?

在 laravel 9 应用程序中,我将队列与 Redis 结合使用,为此在必须排队的通知中,我写道:

class CurrencyRatesImportRunNotification extends Notification  implements ShouldQueue  // IT IS QUEUED
{
    use Queueable;



    public function __construct(
    ) {
    ...
    }

    public function via($notifiable)
    {
        return ['mail'];
    }

这些电子邮件是在我 运行 在控制台中发送的:

php artisan queue:work

但我也有不同的通知,必须立即发送,并且必须广播事件以在应用程序中使用 pusher-js 进行通知,所以 此通知有:

class ContactUsCreatedNotification extends Notification   // IT HAS NO ShouldQueue here
{
    use Queueable;
    public function __construct(string $title, string $content_message, int $user_id)
    {
    ...
    }

    public function via($notifiable)
    {
        return ['mail', 'broadcast'];
    }

在 .env 文件中我有:

QUEUE_CONNECTION=redis
REDIS_CLIENT=predis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379


BROADCAST_DRIVER=log  // later I will replace it with pusher
CACHE_DRIVER=file
FILESYSTEM_DISK=local
SESSION_DRIVER=database
SESSION_LIFETIME=120

我希望在日志中看到广播事件,但没有发生。 在 phpRedisAdmin 中,我看到了这些广播事件,并且只有在我 运行

之后
php artisan queue:work

我在日志文件中看到如下行:

[2022-05-13 06:51:10] local.INFO: Broadcasting [Illuminate\Notifications\Events\BroadcastNotificationCreated] on channels [private-App.Models.User.1] with payload:
{
    "title": "Contact us and we will review your message",
    "content_message": "Contact us and we will review your message",
    "user_id": 1,
    "id": "ea1c4896-9460-495c-bc9a-6a8fd0547fd3",
    "type": "App\Notifications\ContactUsCreatedNotification",
    "socket": null
}

对于任何事件。

为什么ContactUsCreatedNotification在redis中排队?因为我没有实现 ShouldQueue ?

"laravel/framework": "^v9.6.0",
"predis/predis": "^1.1",
"pusher/pusher-php-server": "^7.0",

"pusher-js": "^7.1.0-beta",

谢谢!

从 ContactUsCreatedNotification 中删除 Queueable 特征,一切都会好的。