網(wǎng)站開(kāi)發(fā)和桌面開(kāi)發(fā)哪個(gè)難百度搜索熱詞查詢
RocketMQ 領(lǐng)域模型
RockeMQ整體結(jié)構(gòu)預(yù)覽
RocketMQ 中的一些概念
Topic:主題,可以理解為類別、分類的概念
MessageQueue:消息隊(duì)列,存儲(chǔ)數(shù)據(jù)的一個(gè)容器(隊(duì)列索引數(shù)據(jù)),默認(rèn)每個(gè) Topic 下有 4 個(gè)隊(duì)列被分配出來(lái)存儲(chǔ)消息。
Message:消息,真正攜帶信息的載體概念
Producer:生產(chǎn)者,負(fù)責(zé)發(fā)送消息
Consumer:消費(fèi)者,負(fù)責(zé)消費(fèi)消息
ConsumerGroup:眾多消費(fèi)者構(gòu)成的整體或構(gòu)成的集群,稱之為消費(fèi)者組。
Subscription:訂閱關(guān)系,消費(fèi)者得知道自己需要消費(fèi)哪個(gè) Topic 下的哪個(gè)隊(duì)列的數(shù)據(jù)
RocketMQ 單機(jī)服務(wù)搭建
二進(jìn)制下載主頁(yè)
啟動(dòng)文檔
我這里使用docker,具體的啟動(dòng)參數(shù)我沒(méi)有研究只是搭建一個(gè)可用的跑案例:
docker run -d -p 9876:9876 -v /env/liyong/data/docker/rocketmq/namesrv/logs:/root/logs -v /env/liyong/data/docker/rocketmq/namesrv/store:/root/store --name rmqnamesrv -e "MAX_POSSIBLE_HEAP=100000000" apache/rocketmq:5.1.4 sh mqnamesrvdocker run -d -p 10911:10911 -p 10909:10909 -v /env/liyong/data/docker/rocketmq/broker/logs:/root/logs -v /env/liyong/data/docker/rocketmq/broker/store:/root/store -v /env/liyong/data/docker/rocketmq/broker/conf/broker.conf:/opt/rocketmq/conf/broker.conf --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=100000000" -e "JAVA_OPT_EXT=-server -Xms1g -Xmx1g -Xmn512m" apache/rocketmq:5.1.4 sh mqbroker -c /opt/rocketmq/conf/broker.conf
#控制臺(tái)
docker run -d --name rmqconsole -p 9800:8080 --link rmqnamesrv:namesrv -e "JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -t apacherocketmq/rocketmq-dashboard
#broker.conf
#這段配置是我網(wǎng)上找的,如果是要生產(chǎn)環(huán)境使用的話可以再研究一下官方文檔
# 所屬集群名稱,如果節(jié)點(diǎn)較多可以配置多個(gè)
brokerClusterName = DefaultCluster
#broker名稱,master和slave使用相同的名稱,表明他們的主從關(guān)系
brokerName = broker-a
#0表示Master,大于0表示不同的slave
brokerId = 0
#表示幾點(diǎn)做消息刪除動(dòng)作,默認(rèn)是凌晨4點(diǎn)
deleteWhen = 04
#在磁盤上保留消息的時(shí)長(zhǎng),單位是小時(shí)
fileReservedTime = 48
#有三個(gè)值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和異步表示Master和Slave之間同步數(shù)據(jù)的機(jī)制;
brokerRole = ASYNC_MASTER
#刷盤策略,取值為:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盤和異步刷盤;SYNC_FLUSH消息寫入磁盤后才返回成功狀態(tài),ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH
# 設(shè)置broker節(jié)點(diǎn)所在服務(wù)器的ip地址 我這邊直接給的服務(wù)器的外網(wǎng)地址
brokerIP1 = 111.229.199.181
# 磁盤使用達(dá)到95%之后,生產(chǎn)者再寫入消息會(huì)報(bào)錯(cuò) CODE: 14 DESC: service not available now, maybe disk full
diskMaxUsedSpaceRatio=95
#是否開(kāi)啟消息軌跡 用于記錄消息
traceTopicEnable=true
需要注意這里如果內(nèi)存不夠是會(huì)報(bào)異常無(wú)法啟動(dòng):
指定這個(gè)參數(shù)即可 -e “JAVA_OPT_EXT=-server -Xms1g -Xmx1g -Xmn512m”
控制臺(tái)看板(如果是云服務(wù)器不要忘記暴露該暴露的端口
):