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