摘要:本地的安裝與調(diào)試標(biāo)簽啟動(dòng)進(jìn)入的源碼項(xiàng)目。消息發(fā)送的高性能與低延遲。強(qiáng)大的消息堆積能力與消息處理能力。嚴(yán)格的順序消息存儲(chǔ)。保證消息至少被消費(fèi)一次,但不承諾消息不會(huì)被消費(fèi)者多次消費(fèi)。其消息的冪等由消費(fèi)者自己實(shí)現(xiàn)。
本地RocketMQ的安裝與調(diào)試
標(biāo)簽:【RocketMQ】
1. 啟動(dòng)進(jìn)入RocketMQ-ALL的源碼項(xiàng)目。
執(zhí)行maven打包:
mvn -Prelease-all -DskipTests clean install -U
進(jìn)入打包好的文件
cd /Users/rtw/IdeaProjects/RocketMQ/distribution/target/apache-rocketmq/bin
進(jìn)入distribution/conf. 將其中的broker.conf 、 logback_broker.xml、logback_namesrv.xml復(fù)制到rocketmq_all/conf下。
修改broker.conf 的配置:
brokerClusterName = DefaultCluster brokerName = broker-a brokerId = 0 deleteWhen = 04 fileReservedTime = 48 brokerRole = ASYNC_MASTER flushDiskType = ASYNC_FLUSH namesrvAddr=127.0.0.1:9876 #存儲(chǔ)路徑 storePathRootDir=/Users/rtw/IdeaProjects/RocketMQ/store #commitLog 存儲(chǔ)路徑 storePathCommitLog=/Users/rtw/IdeaProjects/RocketMQ/store/commitlog #消費(fèi)隊(duì)列存儲(chǔ)路徑存儲(chǔ)路徑 storePathConsumeQueue=/Users/rtw/IdeaProjects/RocketMQ/store/consumequeue #消息索引存儲(chǔ)路徑 storePathIndex=/Users/rtw/IdeaProjects/RocketMQ/store/index #checkpoint 文件存儲(chǔ)路徑 storeCheckpoint=/Users/rtw/IdeaProjects/RocketMQ/store/checkpoint #Broker 的角色 #- ASYNC_MASTER 異步復(fù)制Master #- SYNC_MASTER 同步雙寫Master #- SLAVE brokerRole=ASYNC_MASTER #刷盤方式 #- ASYNC_FLUSH 異步刷盤 #- SYNC_FLUSH 同步刷盤 flushDiskType=ASYNC_FLUSH #checkTransactionMessageEnable=false #abort 文件存儲(chǔ)路徑 abortFile=/Users/rtw/IdeaProjects/RocketMQ/store/abort
運(yùn)行org.apache.rocketmq.namesrv.NamesrvStartup,需要進(jìn)行配置:
添加Environment variables: ROCKETMQ_HOME=/Users/rtw/IdeaProjects/RocketMQ
運(yùn)行org.apache.rocketmq.broker.BrokerStartup,需要進(jìn)行配置:
添加Environment variables: ROCKETMQ_HOME=/Users/rtw/IdeaProjects/RocketMQ
配置Program arguments,也就是項(xiàng)目的broker.conf的位置:
-c /Users/rtw/IdeaProjects/RocketMQ/conf/broker.conf
日志位置見RocketMQ/conf/logback_broker.xml.
運(yùn)行org.apache.rocketmq.example.quickstart.Producer創(chuàng)建消息,注意需要添加producer.setNamesrvAddr("127.0.0.1:9876");
運(yùn)行org.apache.rocketmq.example.quickstart.Consumer消費(fèi)消息,注意添加consumer.setNamesrvAddr("127.0.0.1:9876");
2. RocketMQ
RocketMQ是一款高性能消息中間件,其核心的優(yōu)勢(shì):
可靠的消息存儲(chǔ)。
消息發(fā)送的高性能與低延遲。
強(qiáng)大的消息堆積能力與消息處理能力。
嚴(yán)格的順序消息存儲(chǔ)。
懂得取舍,消息中間件的理想狀態(tài)是一條消息能且只被消費(fèi)一次,但要做到這一點(diǎn)必然需要犧牲性能。RocketMQ保證消息至少被消費(fèi)一次,但不承諾消息不會(huì)被消費(fèi)者多次消費(fèi)。其消息的冪等由消費(fèi)者自己實(shí)現(xiàn)。
2.1 設(shè)計(jì)理念
使用NameServer,摒棄了業(yè)內(nèi)常用的Zookeeper充當(dāng)信息管理的“注冊(cè)中心”。
因?yàn)門opic路由信息無須在集群之間保持強(qiáng)一致性,追求最終一致性,并且能容忍分鐘級(jí)的不一致。
高效的IO存儲(chǔ)機(jī)制。
容忍設(shè)計(jì)缺陷,RocketMQ保證消息至少被消費(fèi)一次,但不承諾消息不會(huì)被消費(fèi)者多次消費(fèi)。其消息的冪等由消費(fèi)者自己實(shí)現(xiàn)。
2.2 設(shè)計(jì)目標(biāo)RocketMQ作為一款消息中間件,需要解決如下問題:
架構(gòu)模式:
RocketMQ與大部分消息中間件一樣,采用發(fā)布訂閱模式,基本的參與組件主要包括:消息發(fā)送者、消息服務(wù)器(消息存儲(chǔ))、消息消費(fèi)、路由發(fā)現(xiàn)。
順序消息:
消息消費(fèi)者按照消息達(dá)到消息存儲(chǔ)服務(wù)器的順序消費(fèi)。
消息過濾:
RocketMQ消息過濾支持在 ==服務(wù)端== 與 ==消費(fèi)端==的消息過濾機(jī)制。
消息在Broker端過濾。Broker可以只將消息消費(fèi)者感興趣的消息發(fā)送給消息過濾機(jī)制。
消息在消費(fèi)端過濾,消息過濾方式完全由消息消費(fèi)者自定義,但缺點(diǎn)是有很多無效消息會(huì)從Broker傳輸?shù)较M(fèi)者。
消息存儲(chǔ):
消息的堆積能力 和 消息存儲(chǔ)性能。RocketMQ追求消息存儲(chǔ)的高性能,引入內(nèi)存映射機(jī)制,所有有主題的消息順存儲(chǔ)在同一個(gè)文件中。
消息高可用性:
消息到達(dá)(消費(fèi))低延遲:
確保消息必須被消費(fèi)一次:
RocketMQ通過消息消費(fèi)確認(rèn)機(jī)制(ACK)來確保消息至少被消費(fèi)一次,但由于ACK消息有可能丟失等其他原因,==RocketMQ無法做到消息只被消費(fèi)一次,有重復(fù)消費(fèi)的可能。==
3. 啟動(dòng)參數(shù)brokerRole=?;SYNC_MASTER、ASYNC_MASTER、SLAVE。SYNC和ASYNC表示Master和Slave同步消息設(shè)置,SYNC的意思是當(dāng)Slave和Master消息同步完成后,再返回發(fā)送成功的狀態(tài)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/77523.html
摘要:前提通過前面兩篇文章可以簡(jiǎn)單的了解和安裝,今天就將和整合起來使用。然后我運(yùn)行之前的整合項(xiàng)目,查看監(jiān)控信息如下總結(jié)整篇文章講述了與整合和監(jiān)控平臺(tái)的搭建。 showImg(https://segmentfault.com/img/remote/1460000013232432?w=1920&h=1277); 前提 通過前面兩篇文章可以簡(jiǎn)單的了解 RocketMQ 和 安裝 RocketMQ...
摘要:依次執(zhí)行下面命令本地安裝從官方安裝包下載。管理界面提供多種管理方式命令行和界面等提供一個(gè)開源的擴(kuò)展項(xiàng)目里面包含一個(gè)子項(xiàng)目配置下打個(gè)包就可以用了。 前言 github 開源項(xiàng)目--paascloud-master:https://github.com/paascloud/... paascloud-master 官方環(huán)境搭建:http://blog.paascloud.net/20...
摘要:當(dāng)接收到消息后,會(huì)在方法中調(diào)用方法,將的信息塞進(jìn)緩存中,并且會(huì)定時(shí)發(fā)送心跳將發(fā)送給進(jìn)行注冊(cè)。這也說明了當(dāng)用集群模式去創(chuàng)建時(shí),集群里面每個(gè)的的數(shù)量相同,當(dāng)用單個(gè)模式去創(chuàng)建時(shí),每個(gè)的數(shù)量可以不一致。 微信公眾號(hào)「后端進(jìn)階」,專注后端技術(shù)分享:Java、Golang、WEB框架、分布式中間件、服務(wù)治理等等。 老司機(jī)傾囊相授,帶你一路進(jìn)階,來不及解釋了快上車! 我還記得第一次使用rocket...
摘要:但是服務(wù)器又確實(shí)是收到了這條消息的,只是給客戶端的響應(yīng)丟失了,所以導(dǎo)致的結(jié)果就是扣款失敗,成功發(fā)貨。所有的半消息都會(huì)寫在為的半消息隊(duì)列里,并且每條半消息,在整個(gè)鏈路里會(huì)被寫多次,如果并發(fā)很大且大部分消息都是事務(wù)消息的話,可靠性會(huì)存在問題。 前言 得益于MQ削峰填谷,系統(tǒng)解耦,操作異步等功能特性,在互聯(lián)網(wǎng)行業(yè),可以說有分布式服務(wù)的地方,MQ都往往不會(huì)缺席。由阿里自研的RocketMQ更是...
摘要:但是服務(wù)器又確實(shí)是收到了這條消息的,只是給客戶端的響應(yīng)丟失了,所以導(dǎo)致的結(jié)果就是扣款失敗,成功發(fā)貨。既然消息的發(fā)送不能和本地事務(wù)寫在一起,那如何來保證其整體具有原子性的需求呢答案就是今天我們介紹的主角事務(wù)消息。 前言 得益于MQ削峰填谷,系統(tǒng)解耦,操作異步等功能特性,在互聯(lián)網(wǎng)行業(yè),可以說有分布式服務(wù)的地方,MQ都往往不會(huì)缺席。由阿里自研的RocketMQ更是經(jīng)歷了多年的雙十一高并發(fā)挑戰(zhàn)...
閱讀 2967·2021-11-23 09:51
閱讀 1646·2021-11-15 11:36
閱讀 3109·2021-10-13 09:40
閱讀 2244·2021-09-28 09:35
閱讀 13323·2021-09-22 15:00
閱讀 1438·2019-08-29 13:56
閱讀 2989·2019-08-29 13:04
閱讀 2769·2019-08-28 18:06