前言
… …
特性
1.支持集群模型、负载均衡、水平扩展能力
2.亿级别消息堆积能力
3.采用零拷贝的原理,顺序写盘,随机读
4.底层通信框架采用Netty NIO
5.NameServer代替Zookeeper,实现服务寻址和服务协调
6.消息失败重试机制、消息可查询
7.强调集群无单点,可扩展,任意一点高可用,水平可扩展
部署
]# echo 'Asia/Shanghai' > /etc/timezone
]# mkdir -p /data/deploy/rocketmq/
]# cd /data/deploy/rocketmq/
rocketmq]# cat > docker-compose.yml <<-EOF
version: "3.5"
services:
rocketmqsrv:
image: apacherocketmq/rocketmq:4.5.0
container_name: rocketmqsrv
hostname: rocketmqsrv
privileged: true
user: root
ports:
- 9876:9876
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /data/volume/rocketmq/rocketmqsrv/logs:/home/rocketmq/logs:Z
command: sh mqnamesrv
restart: always
tty: true
rocketmqbroker:
image: apacherocketmq/rocketmq:4.5.0
container_name: rocketmqbroker
hostname: rocketmqbroker
privileged: true
user: root
ports:
- 10909:10909
- 10911:10911
- 10912:10912
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /data/volume/rocketmq/broker/logs:/home/rocketmq/logs:Z
- /data/volume/rocketmq/broker/store:/home/rocketmq/store:Z
- /data/deploy/rocketmq/broker.conf:/home/rocketmq/rocketmq-4.5.0/conf/broker.conf
command: sh mqbroker -n rocketmqsrv:9876 -c ../conf/broker.conf
depends_on:
- rocketmqsrv
restart: always
tty: true
rockermqconsole:
image: apacherocketmq/rocketmq-console:2.0.0
container_name: rockermqconsole
hostname: rockermqconsole
privileged: true
user: root
ports:
- 30808:8080
environment:
- JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.1.10:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
depends_on:
- rocketmqsrv
restart: always
tty: true
EOF
rocketmq]# cat > broker.conf <<-EOF
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = 192.168.1.10
EOF
rocketmq]# docker-compose up -d
测试rocketmq服务
测试部署服务的正常状态
rocketmq]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fac152a5d2fd apacherocketmq/rocketmq-console:2.0.0 "sh -c 'java $JAVA_O…" 3 minutes ago Up 12 seconds 0.0.0.0:30808->8080/tcp, :::30808->8080/tcp
d3ec0b8dcef4 apacherocketmq/rocketmq:4.5.0 "sh mqbroker -n rock…" 14 seconds ago Up 12 seconds 0.0.0.0:10909->10909/tcp, :::10909->10909/tcp, 9876/tcp, 0.0.0.0:10911-10912->10911-10912/tcp, :::10911-10912->10911-10912/tcp rocketmqbroker
82f5ddb8f27e apacherocketmq/rocketmq:4.5.0 "sh mqnamesrv" 14 seconds ago Up 13 seconds 10909/tcp, 0.0.0.0:9876->9876/tcp, :::9876->9876/tcp, 10911-10912/tcp
rocketmq]# docker logs -f rocketmqsrv
... ...
The Name Server boot success. serializeType=JSON
rocketmq]# docker logs -f rocketmqbroker
The broker[broker-a, 172.31.0.3:10911] boot success. serializeType=JSON and name server is rocketmqsrv:9876
● rocketmq web ui
http://192.168.1.10:30808
测试部署rocketmq服务的生产者、消费者正常状态
● rocketmqsrv服务测试
rocketmq]# docker exec -it rocketmqsrv /bin/bash
[root@rocketmqsrv bin]# export NAMESRV_ADDR=localhost:9876
[root@rocketmqsrv bin]# sh tools.sh org.apache.rocketmq.example.quickstart.Producer
SendResult [sendStatus=SEND_OK, msgId= ...
[root@rocketmqsrv bin]# sh tools.sh org.apache.rocketmq.example.quickstart.Consumer
ConsumeMessageThread_%d Receive New Messages: [MessageExt...
● rocketmqbroker服务测试(新开终端执行命令)
rocketmq]# docker exec -it rocketmqbroker /bin/bash
[root@rocketmqsrv bin]# export NAMESRV_ADDR=192.168.1.10:9876
[root@rocketmqsrv bin]# sh tools.sh org.apache.rocketmq.example.quickstart.Producer
SendResult [sendStatus=SEND_OK, msgId= ...
[root@rocketmqsrv bin]# sh tools.sh org.apache.rocketmq.example.quickstart.Consumer
ConsumeMessageThread_%d Receive New Messages: [MessageExt...
结语
apache rockermq 官方文档
apacherocketmq官方镜像仓库
rocketmq-docker github