文章目录
docker的出现 可以大大简化我们安装程序的开销,可以更方便地帮助我们管理中间件。
1、选择镜像
[root@wojiushiwo ~]# docker search rocketmq
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
rocketmqinc/rocketmq Image repository for Apache RocketMQ 37
foxiswho/rocketmq rocketmq 28
styletang/rocketmq-console-ng rocketmq-console-ng 28
apacherocketmq/rocketmq Docker Image for Apache RocketMQ 11
laoyumi/rocketmq 10 [OK]
xlxwhy/rocketmq alibaba's rocketmq 4
rocketmqinc/rocketmq-namesrv Customized RocketMQ Name Server Image for Ro… 3
rocketmqinc/rocketmq-broker Customized RocketMQ Broker Image for RocketM… 3
huanwei/rocketmq-broker 2
pangliang/rocketmq-console-ng 1
2019liurui/rocketmq-namesrv RocketMQ name service image for RocketMQ-Ope… 1
apacherocketmq/rocketmq-operator RocketMQ Operator is to manage RocketMQ serv… 1
2019liurui/rocketmq-broker RocketMQ broker image for RocketMQ-Operator 1
coder4/rocketmq rocketmq 1 [OK]
king019/rocketmq rocketmq 0
pengzu/rocketmq-console-ng web console for rocketmq ,this code is from … 0
huanwei/rocketmq 0
huanwei/rocketmq-broker-k8s 0
2019liurui/rocketmq-operator Kubernetes Operator for RocketMQ ! 0
slpcat/rocketmq-console-ng 0
rocketmqinc/rocketmq-operator The Kubernetes operator for RocketMQ 0
huanwei/rocketmq-operator 0
fengzt/rocketmq-broker apache rocketmq 4.2.0 broker server(官方文档… 0
slpcat/rocketmq 0
fengzt/rocketmq-nameserver apache rocketmq 4.2.0 nameserver 0
2、拉取镜像
docker pull rocketmqinc/rocketmq
3、查看镜像
[root@wojiushiwo ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 718a6da099d8 27 hours ago 448MB
tomcat latest 9a9ad4f631f8 7 days ago 647MB
hello-world latest bf756fb1ae65 7 months ago 13.3kB
rocketmqinc/rocketmq latest 09bbc30a03b6 18 months ago 380MB
longhronshens/mycat-docker latest f9a4ece7c742 3 years ago 793MB
4、运行镜像
4.1、创建本地文件夹用于挂载容器内文件
cd /usr/local/
mkdir mq
4.2、安装nameserver
docker run -d -p 9876:9876 -v /usr/local/mq/data/namesrv/logs:/root/logs -v /usr/local/mq/data/namesrv/store:/root/store --name rmqnamesrv -e "MAX_POSSIBLE_HEAP=100000000" 09bbc30a03b6 sh mqnamesrv
4.3、安装broker
本机创建broker.conf 以映射到容器的该文件
[root@wojiushiwo mq]# pwd
/usr/local/mq
[root@wojiushiwo mq]# mkdir conf;cd conf
[root@wojiushiwo ~]# cat /usr/local/mq/conf/broker.conf
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1=外网地址,如果是阿里云服务器则是公网地址
安装broker
docker run -d -p 10911:10911 -p 10909:10909 -v /usr/local/mq/data/broker/logs:/root/logs -v /usr/local/mq/data/broker/store:/root/store -v /usr/local/mq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" 09bbc30a03b6 sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
–link 可以用来链接2个容器,使得源容器(被链接的容器)和接收容器(主动去链接的容器)之间可以互相通信,并且接收容器可以获取源容器的一些数据,如源容器的环境变量。
5、安装rocketmq 控制台
docker pull styletang/rocketmq-console-ng
运行镜像
docker run -e "JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 -t 7df83bb6e638
6、查看容器
注意
对于上面映射的端口如9876、8080等,如需在外部被使用,则需要在阿里云安全组
上配置这些接口运行访问或在防火墙中配置外部可以访问这些端口
在浏览器上访问rocketmq控制台,公网地址:8080
FAQ:
1、如果在程序中使用rocketmq发消息时,报错No route info of this topic
需要怎么解决?
可以先通过控制台创建topic或者在启动broker时 指定autoCreateTopicEnable=true
2、producer端发送消息时 报错RemotingTooMuchRequestException: sendDefaultImpl call timeout
是为什么?
BrokerIP展示的是云服务器的本地IP,不是公网IP,可通过如下图查看
如果箭头处不是公网地址,则需要在broker.conf中新增一行brokerIP1=公网地址
,随后重启broker