rabbitmq支持多少隊列 如何設(shè)計一個MQ消息隊列?
如何設(shè)計一個MQ消息隊列?1. 在上圖中定義發(fā)送和使用消息的過程2。首先定義消息協(xié)議,如ActiveMQ、stomp、XMPP等3。定義消息協(xié)議,定義消息隊列需要滿足的場景是否要保證消息的可靠性,必要
如何設(shè)計一個MQ消息隊列?
1. 在上圖中定義發(fā)送和使用消息的過程
2。首先定義消息協(xié)議,如ActiveMQ、stomp、XMPP等
3。定義消息協(xié)議,定義消息隊列需要滿足的場景
是否要保證消息的可靠性,必要時要保證存儲的高可用性
是否要支持同步和異步消息
是否要保證消息隊列例如rocketmq是高可靠性,卡夫卡是高吞吐量,但不高可靠性。
RabbitMQ怎樣能實現(xiàn)多個隊列由一個消費者來接收消息?
1. 笨拙的方法是循環(huán)。消耗的阻塞監(jiān)視可以設(shè)置超時。通過設(shè)置較小的超時,可以依次監(jiān)視多個通道,也可以變相監(jiān)視多個隊列。性能要求不是很高,所以可以采用這種方法
2。另一種方法是先取出隊列中的消息數(shù),然后循環(huán)讀取,然后切換到另一個隊列如果隊列中沒有消息,所有隊列都將按這種方式等待
3。有專業(yè)人士的回答,但我還沒有完全理解:
消費者是業(yè)務(wù)層的概念,消費或訂閱是AMQP,因此,如果你問消費者是否可以訂閱多個隊列,答案當(dāng)然是。解決方案也是一種,根據(jù)協(xié)議的進程,分別向不同的隊列進行查詢。是使用多線程還是事件驅(qū)動(單線程)取決于實現(xiàn)。
如果控制多線程的能力不是很強,建議不要使用此方法。太專業(yè)了
4。后來,我仔細考慮了這個問題。也許我可以在應(yīng)用層重新設(shè)計它。我可以將線程池用作只讀消息的多個使用者,而不處理它們。然后將它們發(fā)布到另一個隊列中,并使用一個使用者來處理消息