亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何防止隊列系統同時處理一個隊列中的多個作業?

如何防止隊列系統同時處理一個隊列中的多個作業?

PHP
偶然的你 2022-09-03 17:00:30
我有很多任務,應該按正確的順序處理。我想按“類型”將它們劃分為不同的隊列。應動態創建隊列。然后我想啟動 X workers,它將處理隊列中的任務。但有一個重要的規則 - 從每個隊列中,一次只應處理一個任務。原因是 - 指定類型的每個任務都可以更改應用程序的狀態,因此,如果最后一個任務尚未完成,則我無法開始處理相同類型的新任務。我想將Laravel隊列系統與Redis驅動程序一起使用,但我不確定它是否能夠做到這一點。如何防止隊列系統同時從每個隊列中取出多個作業?有什么想法嗎?提前感謝您的幫助。
查看完整描述

2 回答

?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

如果您正在使用,那么這就是您可以在文件中執行的操作。supervisor.conf


[program:laravel-worker]

process_name=%(program_name)s_%(process_num)02d

command=php /var/www/html/****/artisan queue:work

autostart=true

autorestart=true

user=root

numprocs=1  <----- this is what you are looking for

redirect_stderr=true

stdout_logfile=/var/www/html/****/storage/logs/supervisord.log

numprocs 指令將指示 Supervisor 運行 1 個 queue:work 進程并對其進行監視,如果失敗,則自動重新啟動它。(Laravel Queue Supervisor Doc)


查看完整回答
反對 回復 2022-09-03
?
九州編程

TA貢獻1785條經驗 獲得超4個贊

作業鏈接允許您指定在主作業成功執行后應按順序運行的排隊作業的列表。如果序列中的一個作業失敗,則不會運行其余作業。要執行排隊的作業鏈,您可以在任何可調度作業上使用該方法。withChain


如果要指定應用于鏈接作業的默認連接和隊列,可以使用 and 方法。allOnConnectionallOnQueue


ProcessPodcast::withChain([

    new OptimizePodcast,

    new ReleasePodcast

])->dispatch()->allOnConnection('redis')->allOnQueue('podcasts');


查看完整回答
反對 回復 2022-09-03
  • 2 回答
  • 0 關注
  • 103 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號