RocketMQ 簡介
1.RocketMQ 是一個隊列模型的消息中間件寡键,具有高性能,高可用雪隧,高實時等特性西轩,它并不支持JMS(java消息服務(wù))規(guī)范,但參考了JMS規(guī)范和kafak等的思想脑沿。
2.Producer 藕畔、Consumer,隊列都可以分布式庄拇。
3.Producer可以向隊列輪流發(fā)送消息注服,隊列的集合稱為Topic,Consumer可以做廣播消費,也可以做集群消費祠汇。
4.能夠保證嚴(yán)格的消息順序
5.提供消費者水平訂閱擴展能力
6.億級的消息堆積能力
7.較少的依賴
RocketMQ術(shù)語介紹
1.Producer ?消息生產(chǎn)者仍秤,即生產(chǎn)消息的系統(tǒng),一般指業(yè)務(wù)系統(tǒng)可很。
2.Consumer 消息消費者诗力,即消費消息的系統(tǒng),一般指后端的異步處理系統(tǒng)我抠。
3.ProducerGroup 生產(chǎn)者組苇本,指一類發(fā)送消息的系統(tǒng)。
4.ConsumerGroup 消費組菜拓,指消費同一類消息的系統(tǒng)
5.Broker 消息中間件瓣窄,主要完成消息的存儲,轉(zhuǎn)發(fā)纳鼎,是消息系統(tǒng)的核心組件俺夕。
5.Topic 消息主題,消息隊列的集合贱鄙。
6.MessageQueue ?消息隊列劝贸,RocketMQ 的所有消息都是持久化的,可以把MessageQueue 理解為一個長度無限的數(shù)組逗宁,通過下標(biāo)offset 訪問消息
7.廣播消費消息模型映九,指消費這消費某主題的所有隊列的消息,消費組在該消息模型下不起作用瞎颗,類似JMS的publish/subscribe.
8.集群消費消息模型件甥,是指同一個消費組的消費者各自消費某一主題的消費隊列的消息,比如有一個主題 topicA,該主題有4個隊列(創(chuàng)建主題的時候可以指定該主題的隊列的數(shù)量),有一個消費組testConsumerGroup,該消費組有四個消費者(四個機器或者四個進程),則四個消費者各自消費一個消息隊列哼拔。
RocketMQ 提供功能
1.消息的順序引有,即消費消息的順序同發(fā)送消息消息的順序一致。
2.消息重試管挟,即消息消費失敗后轿曙,RocketMQ 提供了一種機制,可以讓消息在消費一次僻孝。
3.定時消息,即指消息到達broker后守谓,并不是立即投遞給消費者穿铆,而是在某個時間點或者一定的延時后在投遞,RocketMQ支持一定的延時投遞消息斋荞。
4.消息回溯荞雏,是指消息成功被消費者消費后,可能需要一個機制重新消費以前的消息,rocketmq支持回溯消費某個時間點的消息(支持到毫秒級別),可以向前也可以向后凤优。
5.消息重復(fù)悦陋,RocketMQ 保證 At least once ,即消息至少被投遞一次筑辨,并不支持 Exactly only once(支持這個需要生產(chǎn)者指發(fā)送一次俺驶,broker只投遞一次,實現(xiàn)這個會損失性能)棍辕,所以由于網(wǎng)絡(luò)或者消費組啟動或者停止暮现,可能造成消息重復(fù)投遞,需要消費者做到去重楚昭,即消費消息要做到冪等栖袋,但在大部分情況下,消息是不會重復(fù)投遞的抚太。