为什么通知在没有实现 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 特征,一切都会好的。
在 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 特征,一切都会好的。