redis訂閱發(fā)布堵塞問(wèn)題 如何設(shè)計(jì)一個(gè)MQ消息隊(duì)列?
如何設(shè)計(jì)一個(gè)MQ消息隊(duì)列?1. 在上圖中定義發(fā)送和使用消息的過(guò)程2。首先定義消息協(xié)議,如ActiveMQ、stomp、XMPP等3。定義消息協(xié)議,定義消息隊(duì)列需要滿足的場(chǎng)景是否要保證消息的可靠性,必要
如何設(shè)計(jì)一個(gè)MQ消息隊(duì)列?
1. 在上圖中定義發(fā)送和使用消息的過(guò)程
2。首先定義消息協(xié)議,如ActiveMQ、stomp、XMPP等
3。定義消息協(xié)議,定義消息隊(duì)列需要滿足的場(chǎng)景
是否要保證消息的可靠性,必要時(shí)要保證存儲(chǔ)的高可用性
是否要支持同步和異步消息
是否要保證消息隊(duì)列例如rocketmq是高可靠性,卡夫卡是高吞吐量,但不高可靠性。
redis為什么總是把訂閱/發(fā)布和消息隊(duì)列聯(lián)系在一起?
首先,redis的發(fā)布訂閱模式不緩存數(shù)據(jù),即我發(fā)布。如果你能接受它,你就能接受它。如果你沒(méi)有準(zhǔn)備好,你會(huì)錯(cuò)誤地準(zhǔn)備之前的數(shù)據(jù)。
至于為什么會(huì)與消息隊(duì)列關(guān)聯(lián),是因?yàn)閞edis的發(fā)布訂閱模式是通過(guò)消息隊(duì)列實(shí)現(xiàn)的。例如,多個(gè)發(fā)布者可以發(fā)布消息,而訂閱者將接收消息。可以看出,中間必須有一個(gè)隊(duì)列才能獲取在集合中發(fā)布的消息。然后按順序發(fā)出信息