?xml version="1.0" encoding="UTF-8"?
ActiveMQ:Java語(yǔ)言寫的 ? 嚴(yán)格遵守?JMS java message service
RabbitMQ:Erang ?非Java系統(tǒng)的首選
ZeroMQ:內(nèi)存里用的,不支持持久化,金融場(chǎng)景比較多見
RocketMQ:阿里巴巴開源中間件 ?專門Java系統(tǒng)
Kafka:天生設(shè)計(jì)為分布式 ?很方便擴(kuò)展 ?超高并發(fā) ?10w+
第一種:點(diǎn)對(duì)點(diǎn)
先進(jìn)先出
第二種:發(fā)布訂閱模型
啟動(dòng):
activemqstart
http://localhost:8161?admin admin
消息隊(duì)列處理消息的主程序就叫Broker
ACK機(jī)制
如果broker收到producer的消息,會(huì)有一個(gè)回傳(ack)万搔,如果producer沒有收到ack处坪,會(huì)重新發(fā)一遍剛才的消息牺六,如果超過限制的重試次數(shù)丝蹭,會(huì)拋異常秤掌。
broker發(fā)往consumer同理汉操。
冪等:多次調(diào)用 結(jié)果和一次調(diào)用一致
場(chǎng)景:ack回傳的時(shí)候網(wǎng)絡(luò)故障再来,producer重試的時(shí)候帶一個(gè)messageid,就能達(dá)到冪等
consumer獲取消息有兩種方式:
pull:輪詢消耗資源,有延遲
push:消息比較及時(shí)
消息持久化
kahaDB:消息先存在kahaDB中芒篷,如果斷線重連就從這里讀取
topic 持久化訂閱者 ?一直保持連接 ?
?? ?? ? ? 非持久化訂閱者 ?上線了再發(fā)送
activeMQ 高可用
主從:同一時(shí)間只有一個(gè)在運(yùn)行搜变,另一個(gè)準(zhǔn)備狀態(tài)。不能負(fù)載均衡针炉,但一般不會(huì)丟失消息
負(fù)載均衡:可能會(huì)丟失消息