gpt4 book ai didi

php - Laravel 多个应用程序同一个服务器如果名称相同,队列会发生冲突吗?

转载 作者:行者123 更新时间:2023-12-02 00:38:30 25 4
gpt4 key购买 nike

我们目前在同一台专用服务器上运行两个 Laravel 应用程序。每个应用程序都利用 laravel 的队列系统进行后台作业和通知。每个都使用 redis 作为驱动程序。既没有定义任何特定的队列,它们都使用默认值。我们的supervisor.conf如下:

[program:site-one-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/siteone.com/artisan queue:work --sleep=5 --tries=1
autostart=true
autorestart=true
user=www-data
numprocs=4
redirect_stderr=true
stdout_logfile=/var/www/siteone.com/storage/logs/worker.log

[program:site-two-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/sitetwo.com/artisan queue:work --sleep=5 --tries=1
autostart=true
autorestart=true
user=www-data
numprocs=4
redirect_stderr=true
stdout_logfile=/var/www/sitetwo.com/storage/logs/worker.log

在为第二个站点添加配置之前,一切都按预期进行。添加后,我们正在测试并注意到,当在 sitetwo.com 上调用触发通知发送到队列的事件时,本应收到通知的电子邮件地址却没有收到,而是被发送到两个电子邮件地址仅存在于 siteone.com 数据库中的地址!

只要上述主管作业中只有一个正在运行,一切似乎都按预期运行。

使用相同队列名称进行处理的两个不同应用程序之间是否存在某种冲突?我搞砸了主管配置吗?我还缺少其他东西吗?

最佳答案

类的名称是 Laravel 在读取队列时所关心的。因此,如果您有 2 个站点分派(dispatch)作业 App\Jobs\CoolEmailSender,那么无论哪个应用程序首先接收到它,都会处理它,而不管是哪个应用程序调用了它。

我能想到两件事:

  1. 多个redis实例

  1. 传递给 --queue 的唯一队列名称

关于php - Laravel 多个应用程序同一个服务器如果名称相同,队列会发生冲突吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48257154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com