我目前有一个多服务器 Laravel 设置。我有多个负载平衡的服务器并共享一个数据库。
每个实例还运行一个队列监听器。我希望能够分派(dispatch)两种类型的工作:
- 只运行一次的作业(例如发送电子邮件、更新模型等)
- 在所有队列监听器上运行的作业(例如从文件系统中删除文件)
我认为第一个实现起来非常简单,但不确定如何着手实现第二个。有什么想法吗?
最佳答案
您可以让队列监听器或工作人员处理特定队列。例如,运行队列监听器或工作程序来处理 emails
队列。
php artisan queue:listen --queue=emails
php artisan queue:work --queue=emails
您现在可以将作业分派(dispatch)到此队列
dispatch((new Job)->onQueue('emails'));
这可以帮助您根据您的要求设置多个监听器/工作器来处理不同的队列。
关于php - 同一队列中多台机器上的 Laravel 队列监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44237608/