Docker部署RocketMQ的實(shí)現(xiàn)示例
1.namesrv
1.1 拉取rocketMQ鏡像
docker pull apache/rocketmq:4.9.4
1.2 創(chuàng)建nameserver數(shù)據(jù)存儲(chǔ)目錄
rocketMQ 分為nameserver和broker兩部分,在啟動(dòng)時(shí)應(yīng)該先啟動(dòng)nameserver,因此我們現(xiàn)在先創(chuàng)建nameserver的日志和數(shù)據(jù)存放目錄。這個(gè)目錄可由我們自己定義路徑,這里我將其放到data路徑
mkdir -p /app/rocketmq/logs /app/rocketmq/store
1.3 構(gòu)建namesrv容器并啟動(dòng)
我們已經(jīng)創(chuàng)建好了nameserver的日志和數(shù)據(jù)的存放路徑,此時(shí)我們只需要掛在日志和數(shù)據(jù)路徑,執(zhí)行以下命令啟動(dòng)nameserver即可
docker run -d -p 9876:9876 --restart=always \ -v /app/rocketmq/namesrv/logs:/home/rocketmq/logs \ -v /app/rocketmq/namesrv/store:/home/rocketmq/store \ --name mqnamesrv \ --network rocketmq \ -e"JAVA_OPT_EXT=-server -Xms512m -Xmx512m -Xmn512m" \ apache/rocketmq:4.9.4 \ sh mqnamesrv
2.broker
2.1 創(chuàng)建broker數(shù)據(jù)存儲(chǔ)路徑
在操作這步之前,我們已經(jīng)將nameserver啟動(dòng)成功,則接下來(lái)我們將要為broker創(chuàng)建數(shù)據(jù)掛載目錄和配置文件,以確保broker能夠成功啟動(dòng)。
mkdir -p /app/rocketmq/broker/logs /app/rocketmq/broker/store /app/rocketmq/broker/conf
說(shuō)明:logs:是broker的日志目錄,store:是broker的數(shù)據(jù)目錄(該目錄需求所有讀寫權(quán)限),conf是broker的配置信息目錄
2.2 創(chuàng)建broker配置文件
我們剛剛已經(jīng)創(chuàng)建了broker配置目錄(/data/rocketmqbroker/conf),現(xiàn)在我們要在改配置目錄下增加一個(gè)broker的配置文件,命名叫broker.conf
cd /app/rocketmq/broker/conf vi broker.conf
注意:將一下信息復(fù)制到broker.conf文件中,請(qǐng)注意修改brokerIP1,改為您服務(wù)器的IP地址!注意修改namesrvAddr,改為您nameserver的IP地址!
# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # 所屬集群名字 brokerClusterName=DefaultCluster # broker 名字,注意此處不同的配置文件填寫的不一樣,如果在 broker-a.properties 使用: broker-a, # 在 broker-b.properties 使用: broker-b brokerName=broker-a # 0 表示 Master,> 0 表示 Slave brokerId=0 # nameServer地址,分號(hào)分割 namesrvAddr=192.168.18.200:9876 # 啟動(dòng)IP,如果 docker 報(bào) com.alibaba.rocketmq.remoting.exception.RemotingConnectException: connect to <192.168.0.120:10909> failed # 解決方式1 加上一句 producer.setVipChannelEnabled(false);,解決方式2 brokerIP1 設(shè)置宿主機(jī)IP,不要使用docker 內(nèi)部IP #producer.setVipChannelEnabled=false brokerIP1=192.168.18.200 # 在發(fā)送消息時(shí),自動(dòng)創(chuàng)建服務(wù)器不存在的topic,默認(rèn)創(chuàng)建的隊(duì)列數(shù) defaultTopicQueueNums=4 # 是否允許 Broker 自動(dòng)創(chuàng)建 Topic,建議線下開啟,線上關(guān)閉 ?。?!這里仔細(xì)看是 false,false,false autoCreateTopicEnable=true # 是否允許 Broker 自動(dòng)創(chuàng)建訂閱組,建議線下開啟,線上關(guān)閉 autoCreateSubscriptionGroup=true # Broker 對(duì)外服務(wù)的監(jiān)聽端口 listenPort=10911 # 刪除文件時(shí)間點(diǎn),默認(rèn)凌晨4點(diǎn) deleteWhen=04 # 文件保留時(shí)間,默認(rèn)48小時(shí) fileReservedTime=120 # commitLog 每個(gè)文件的大小默認(rèn)1G mapedFileSizeCommitLog=1073741824 # ConsumeQueue 每個(gè)文件默認(rèn)存 30W 條,根據(jù)業(yè)務(wù)情況調(diào)整 mapedFileSizeConsumeQueue=300000 # destroyMapedFileIntervalForcibly=120000 # redeleteHangedFileInterval=120000 # 檢測(cè)物理文件磁盤空間 diskMaxUsedSpaceRatio=88 # 存儲(chǔ)路徑 # storePathRootDir=/home/ztztdata/rocketmq-all-4.1.0-incubating/store # commitLog 存儲(chǔ)路徑 # storePathCommitLog=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/commitlog # 消費(fèi)隊(duì)列存儲(chǔ) # storePathConsumeQueue=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/consumequeue # 消息索引存儲(chǔ)路徑 # storePathIndex=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/index # checkpoint 文件存儲(chǔ)路徑 # storeCheckpoint=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/checkpoint # abort 文件存儲(chǔ)路徑 # abortFile=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/abort # 限制的消息大小 maxMessageSize=65536 # flushCommitLogLeastPages=4 # flushConsumeQueueLeastPages=2 # flushCommitLogThoroughInterval=10000 # flushConsumeQueueThoroughInterval=60000 # Broker 的角色 # - ASYNC_MASTER 異步復(fù)制Master # - SYNC_MASTER 同步雙寫Master # - SLAVE brokerRole=ASYNC_MASTER # 刷盤方式 # - ASYNC_FLUSH 異步刷盤 # - SYNC_FLUSH 同步刷盤 flushDiskType=ASYNC_FLUSH # 發(fā)消息線程池?cái)?shù)量 # sendMessageThreadPoolNums=128 # 拉消息線程池?cái)?shù)量 # pullMessageThreadPoolNums=128
2.3 構(gòu)建broker容器并啟動(dòng)
docker run -d -p 10911:10911 -p 10909:10909 \ -v /app/rocketmq/broker/logs:/home/rocketmq/logs \ -v /app/rocketmq/broker/store:/home/rocketmq/store \ -v /app/rocketmq/broker/conf/broker.conf:/home/rocketmq/rocketmq-4.9.4/conf/broker.conf \ --name rmqbroker \ -e "NAMESRV_ADDR=mqnamesrv:9876" \ apache/rocketmq:4.9.4 \ sh mqbroker -n mqnamesrv:9876 \ -c /home/rocketmq/rocketmq-4.9.4/conf/broker.conf autoCreateTopicEnable=true
3.RocketMQ-Console可視化界面
3.1 拉取rocketmq-console鏡像
docker pull styletang/rocketmq-console-ng
3.2 構(gòu)建RocketMQ-Console容器并啟動(dòng)
docker run -d --restart=always --name rocketmq-admin -e "JAVA_OPTS=-Drocketmq.namesrv.addr=mqnamesrv:9876 -Dcom.rocketmqsendMessageWithVIPChannel=false" -p 18080 :8080 styletang/rocketmq-console-ng
注意:將一下信息Drocketmq.namesrv.addr后面的IP地址改為您的nameserver IP地址!
到此這篇關(guān)于Docker部署RocketMQ的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Docker部署RocketMQ內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- docker進(jìn)行RocketMq集群部署方式
- Docker安裝部署rocketmq-console工具教程
- 使用Docker容器部署rocketmq單機(jī)的全過(guò)程
- Docker?部署RocketMQ的詳細(xì)操作
- Docker rocketmq部署的實(shí)現(xiàn)示例
- docker安裝rocketMQ和安裝過(guò)程中出現(xiàn)問題的解決
- docker安裝RocketMQ的實(shí)現(xiàn)步驟
- 超詳細(xì)Docker Desktop下安裝rocketmq的教程
- docker安裝rocketMQ教程(最詳細(xì))
- Docker中RocketMQ的安裝與使用詳解
相關(guān)文章
基于Docker的MongoDB實(shí)現(xiàn)授權(quán)訪問的方法
這篇文章主要介紹了基于Docker的MongoDB實(shí)現(xiàn)授權(quán)訪問的方法,需要的朋友可以參考下2017-03-03docker部署釘釘機(jī)器人報(bào)警通知的實(shí)現(xiàn)
本文主要介紹了docker部署釘釘機(jī)器人報(bào)警通知的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05Docker部署java項(xiàng)目的詳細(xì)步驟(利用Dockerfile方式)
docker可以利用簡(jiǎn)單的編寫程序構(gòu)建出任何你想要的環(huán)境,同時(shí)可以跟業(yè)務(wù)代碼相結(jié)合,快速構(gòu)建和生成所需要的應(yīng)用,下面這篇文章主要給大家介紹了關(guān)于Docker部署java項(xiàng)目的詳細(xì)步驟,本文主要利用的是Dockerfile方式,需要的朋友可以參考下2022-08-08解決Docker安裝錯(cuò)誤failure:repodata/repomd.xml from docke
在使用yum命令安裝docker或其他工具時(shí)可能會(huì)遇到failure_repodata_repomd.xmlfromdocker-ce-stable_[Errno256]Nomoremirrorstotry的錯(cuò)誤,原因可能是yum源配置問題,解決方法包括重置yum源,刪除多余的repo文件2024-11-11Docker?link實(shí)現(xiàn)容器互聯(lián)的方式
通過(guò)link方式創(chuàng)建容器,然后我們可以使用被link容器的別名進(jìn)行訪問。本文重點(diǎn)給大家介紹Docker?link實(shí)現(xiàn)容器互聯(lián)的方式,感興趣的朋友一起看看吧2021-12-12docker安裝Adminer并支持mysql和mongodb的詳細(xì)步驟
這篇文章主要介紹了docker安裝Adminer并支持mysql和mongodb,通過(guò)查找并拉取Adminer鏡像,啟動(dòng)docker,支持mysq,本文分步驟給大家詳細(xì)講解,需要的朋友可以參考下2022-10-10