關(guān)于 Redis 隊(duì)列消費(fèi)進(jìn)程的理解問(wèn)題
這是文檔里的說(shuō)明
提示
雖然消費(fèi)者支持多服務(wù)器多進(jìn)程,但是一個(gè)消息只會(huì)有一臺(tái)服務(wù)器的一個(gè)進(jìn)程進(jìn)行消費(fèi),
不會(huì)出現(xiàn)多臺(tái)服務(wù)器或多個(gè)進(jìn)程同時(shí)消費(fèi)一個(gè)消息的情況。
消費(fèi)過(guò)的消息會(huì)自動(dòng)從隊(duì)列刪除,無(wú)需手動(dòng)刪除。
提示
消費(fèi)進(jìn)程可以同時(shí)消費(fèi)多種不同的隊(duì)列,新增隊(duì)列不需要修改process.php中的配置,
新增隊(duì)列消費(fèi)者時(shí)只需要在app/queue/redis下新增對(duì)應(yīng)的Consumer類即可,
并用類屬性$queue指定要消費(fèi)的隊(duì)列名
如果在 app/queue/redis
目錄下有8個(gè)隊(duì)列,假設(shè)每個(gè)隊(duì)列都是繁忙狀態(tài) ( 剛好在沒(méi)有隊(duì)列任務(wù)積壓臨界值 ),是不是可以理解為,process.php
設(shè)置里開(kāi)設(shè)8個(gè)進(jìn)程是最簡(jiǎn)單粗暴的辦法。
按照文檔的上解釋 一個(gè)消息只會(huì)有一臺(tái)服務(wù)器的一個(gè)進(jìn)程進(jìn)行消費(fèi)
,就算開(kāi)了16個(gè)進(jìn)程,實(shí)際上也就8個(gè)進(jìn)程在處理
16個(gè)進(jìn)程不就是16個(gè)同時(shí)消費(fèi)嗎,誰(shuí)空閑誰(shuí)就消費(fèi)