rabbitmq并發(fā)消費(fèi)者數(shù)量 rabbitmq能支持多少的并發(fā)?
rabbitmq能支持多少的并發(fā)?在實(shí)際應(yīng)用中,并發(fā)打印的數(shù)量并不多,但是使用這種模式,1000個用戶總是連接到服務(wù)器上,這是一種極大的浪費(fèi)。過去我們也考慮過用redis來存儲隊(duì)列,然后在打印中心服務(wù)
rabbitmq能支持多少的并發(fā)?
在實(shí)際應(yīng)用中,并發(fā)打印的數(shù)量并不多,但是使用這種模式,1000個用戶總是連接到服務(wù)器上,這是一種極大的浪費(fèi)。過去我們也考慮過用redis來存儲隊(duì)列,然后在打印中心服務(wù)器上改成消費(fèi)隊(duì)列,遠(yuǎn)程調(diào)用全國各地的客戶端進(jìn)行打印。優(yōu)點(diǎn)是遠(yuǎn)程調(diào)用只能在有消息時啟動,而不是像rabbitmq那樣一直保持1000個連接。
rabbitMQ點(diǎn)對點(diǎn),一個隊(duì)列可以多個消費(fèi)者嗎?
Rabbitmq從未使用過。在ActiveMQ中,我剛剛測試了可以有多個消費(fèi)者,消息按順序分發(fā)給不同的消費(fèi)者,比如消息1到消費(fèi)者a,消息2到消費(fèi)者B,消息3到消費(fèi)者a,消息4到消費(fèi)者B。。其優(yōu)點(diǎn)是實(shí)現(xiàn)了負(fù)載均衡。如果消費(fèi)者B突然掛斷,消費(fèi)者a可以正常接收。
我明白,如果我說的是錯的,我希望有上帝來糾正它。非常感謝你。
RabbitMQ怎樣能實(shí)現(xiàn)多個隊(duì)列由一個消費(fèi)者來接收消息?
1. 笨拙的方法是循環(huán)。消耗的阻塞監(jiān)視可以設(shè)置超時。通過設(shè)置較小的超時,可以依次監(jiān)視多個通道,也可以變相監(jiān)視多個隊(duì)列。性能要求不是很高,所以可以采用這種方法
2。另一種方法是先取出隊(duì)列中的消息數(shù),然后循環(huán)讀取,然后切換到另一個隊(duì)列如果隊(duì)列中沒有消息,所有隊(duì)列都將按這種方式等待
3。有專業(yè)人士的回答,但我還沒有完全理解:
消費(fèi)者是業(yè)務(wù)層的概念,消費(fèi)或訂閱是AMQP,因此,如果你問消費(fèi)者是否可以訂閱多個隊(duì)列,答案當(dāng)然是。解決方案也是一種,根據(jù)協(xié)議的進(jìn)程,分別向不同的隊(duì)列進(jìn)行查詢。是使用多線程還是事件驅(qū)動(單線程)取決于實(shí)現(xiàn)。
如果控制多線程的能力不是很強(qiáng),建議不要使用此方法。太專業(yè)了
4。后來,我仔細(xì)考慮了這個問題。也許我可以在應(yīng)用層重新設(shè)計(jì)它。我可以將線程池用作只讀消息的多個使用者,而不處理它們。然后將它們發(fā)布到另一個隊(duì)列中,并使用一個使用者來處理消息
我很高興回答您的問題
rabbitmq使用者會造成很多中斷。讓我解釋一下在我的項(xiàng)目中遇到的問題。
在大數(shù)據(jù)模式下,一次向發(fā)送者發(fā)送10000條數(shù)據(jù),發(fā)送者一次向消費(fèi)者發(fā)送消息。然后消費(fèi)者程序直接處理終端,檢查服務(wù)日志,發(fā)現(xiàn)只有發(fā)送失敗。
關(guān)閉AMQP連接<0.6265.7>(192.168.1.14:42592-> 192.168.1.14:5672):
{寫入程序,發(fā)送失敗,{錯誤,超時}。
rabbitmq服務(wù)器將在短時間內(nèi)向使用者發(fā)送大量消息。然后,如果您沒有時間確認(rèn),服務(wù)器將積壓大量未確認(rèn)的消息,如果消費(fèi)者不匆忙處理,他將被掛起(這也可能導(dǎo)致程序崩潰)。
配置不匹配也會導(dǎo)致錯誤的消費(fèi)者消費(fèi)信息,因此我們必須在上線前仔細(xì)檢查配置信息。
消費(fèi)者將在一段時間后消失。此時,他們需要檢查MQ日志。一般情況下,鏈接已斷開,并將記錄在MQ日志中。在這種情況下,他們需要重新連接。
MQ用戶存在很多問題,需要根據(jù)實(shí)際項(xiàng)目解決。