国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

消息隊(duì)列,消費(fèi)者可以同時(shí)處理多條消息嗎?

z985342160

RabbmitMQ隊(duì)列里都是耗時(shí)任務(wù):請求第三方的API(http)。

當(dāng)開啟一個(gè)消費(fèi)worker時(shí),能否在產(chǎn)生IO時(shí)繼續(xù)處理下一條消息。

場景:同步第三方平臺的產(chǎn)品數(shù)據(jù),比如發(fā)起同步某個(gè)賬號的產(chǎn)品,一個(gè)賬號下面的產(chǎn)品可以最少也有幾千條,多達(dá)十幾萬的也有。

注:考慮第三方API是沒有批量查詢接口的。

將產(chǎn)品ID放在隊(duì)列里,開啟worker消費(fèi),消費(fèi)者可以在遇到IO等待時(shí)繼續(xù)處理下一條消費(fèi)嗎,需要對每條消息ACK(主要是當(dāng)請求失敗可以重試)。

如果不能實(shí)現(xiàn),我就打算放到REDIS list里,用wokerman的定時(shí)器讀取redis來發(fā)送異步http請求,如果失敗就重新加到list里。

另外在這樣IO耗時(shí)的場景下,開啟進(jìn)程數(shù)量怎么計(jì)算會合適些?

2870 1 0
1個(gè)回答

six

用workerman/http-client 可以異步請求,是非阻塞IO。用curl是阻塞IO,無法切換到處理下一個(gè)消息。

關(guān)于進(jìn)程數(shù)的話,如果是用url阻塞方式,估算下消費(fèi)一個(gè)消息需要耗時(shí)多長時(shí)間。估算下產(chǎn)生消息的頻率。進(jìn)程數(shù)因該設(shè)置多少就出來了。比如一個(gè)消息耗時(shí)10秒,整個(gè)系統(tǒng)大概每秒產(chǎn)生10條消息。那么進(jìn)程數(shù)就是100就可以剛好能夠處理。

如果是workerman/http-client方式處理,感覺配置成cpu的1-2倍就差不多了吧。

  • 暫無評論
年代過于久遠(yuǎn),無法發(fā)表回答
??