Docker安装rocketMq

一、概述

RocketMQ是阿里巴巴开源的一款分布式消息中间件,用于处理大规模消息传输与存储。它使用Java语言编写,是阿里巴巴内部历经双十一等高并发场景考验的成熟产品。2016年开源后,RocketMQ捐赠给Apache,并成为了Apache的一个顶级项目。RocketMQ支持事务消息、顺序消息、批量消息、定时消息、消息回溯等多种功能,满足各种复杂的业务需求。

二、特点

高性能:RocketMQ具有高吞吐量和低延迟的特性,能够处理亿级消息堆积,适合对消息队列性能有严格要求的业务环境。

高可靠:RocketMQ采用分布式架构,具有集群级别的高可用性。消息生产者发送一条消息到消息服务器,消息服务器会随机选择一个消费者,只要该消费者消费成功即认为消息发送成功。此外,RocketMQ还支持消息的持久化存储,确保数据不丢失。

高实时:RocketMQ支持实时的消息订阅机制,消息能够迅速地被消费者接收并处理。

分布式:RocketMQ的Producer、Consumer和队列都可以分布式部署,使得系统能够处理更大规模的并发请求。

灵活的消息模式:RocketMQ支持拉(pull)和推(push)两种消息模式,以满足不同的业务场景需求。

丰富的发送方式:RocketMQ提供同步发送、异步发送、顺序发送和单向发送等多种发送方式,以满足不同的消息发送需求。

高效的订阅者水平扩展能力:RocketMQ支持多个消费者实例平均消费一个Topic对应的队列集合,从而实现高效的订阅者水平扩展。

较少的依赖:RocketMQ的依赖较少,使得系统的集成和维护更加简单。

RocketMQ主要由以下组件组成:

Producer:负责生产消息,一般由业务系统负责生产。

Consumer:负责消费消息,一般是后台系统负责异步消费。

Broker:消息中转角色,负责存储消息、转发消息。在实际部署过程中,Broker对应一台服务器,每个Broker可以存储多个Topic的消息。

NameServer:负责Broker的注册和发现,使得Producer和Consumer能够找到可用的Broker。

三、安装

1.下载镜像

docker pull rocketmqinc/rocketmq:latest

 

2.下载成功后查看下载的镜像

docker images

3.创建nameserver数据存储目录

创建nameserver的日志目录logs和数据存放目录store

mkdir -p /usr/local/rocketmq/namesrv/logs /usr/local/rocketmq/namesrv/store

4.启动namesrv容器

docker run -d  --restart=always --name rmqnamesrv \

-p 9876:9876  \

-v  /usr/local/rocketmq/namesrv/logs:/root/logs  \

-v /usr/local/rocketmq/namesrv/store:/root/store  \

rocketmqinc/rocketmq:latest sh mqnamesrv

然后使用命令docker ps 查看rmqnamesrv是否启动成功,如下图,显示启动成功了

5.创建broker数据存储路径

mkdir -p /usr/local/rocketmq/broker/logs /usr/local/rocketmq/broker/store /usr/local/rocketmq/broker/conf

进入/usr/local/rocketmq/broker/conf目录,创建并编辑broker.conf文件

cd /usr/local/rocketmq/broker/conf && vi broker.conf

并将如下内容复制到broker.conf中,然后保存退出(修改brokerIP1为宿主机的IP地址,修改namesrvAddr为nameserver的IP地址

# 所属集群名字

brokerClusterName=DefaultCluster

# broker 名字,不同的配置文件broker 名字具有唯一性

brokerName=broker-1

# 0 表示 Master,> 0 表示 Slave

brokerId=0

# nameServer地址,分号分割

namesrvAddr=192.168.7.46:9876

# 启动IP,填写宿主机ip

brokerIP1=192.168.7.46

# 默认创建的队列数

defaultTopicQueueNums=4

# 是否允许 Broker 自动创建 Topic

autoCreateTopicEnable=true

# 是否允许 Broker 自动创建订阅组

autoCreateSubscriptionGroup=true

# Broker 对外服务的监听端口

listenPort=10911

# 删除文件时间点,默认凌晨2点

deleteWhen=02

# 文件保留时间,默认48小时

fileReservedTime=120

# commitLog 每个文件的大小默认1G

mapedFileSizeCommitLog=1073741824

# ConsumeQueue 每个文件默认存 30W 条,根据业务情况调整

mapedFileSizeConsumeQueue=300000

# destroyMapedFileIntervalForcibly=120000

# redeleteHangedFileInterval=120000

# 检测物理文件磁盘空间

diskMaxUsedSpaceRatio=88

# 存储路径

# storePathRootDir=/usr/local/rocketmq/mydata/store

# commitLog 存储路径

# storePathCommitLog=/usr/local/rocketmq/mydata/store/commitlog

# 消费队列存储

# storePathConsumeQueue=/usr/local/rocketmq/mydata/store/consumequeue

# 消息索引存储路径

# storePathIndex=/usr/local/rocketmq/mydata/store/index

# checkpoint 文件存储路径

# storeCheckpoint=/usr/local/rocketmq/mydata/store/checkpoint

# abort 文件存储路径

# abortFile=/usr/local/rocketmq/mydata/store/abort

# 限制的消息大小

maxMessageSize=65536

# flushCommitLogLeastPages=4

# flushConsumeQueueLeastPages=2

# flushCommitLogThoroughInterval=10000

# flushConsumeQueueThoroughInterval=60000

# Broker 的角色

# - ASYNC_MASTER 异步复制Master

# - SYNC_MASTER 同步双写Master

# - SLAVE

brokerRole=ASYNC_MASTER

# 刷盘方式

# - ASYNC_FLUSH 异步刷盘

# - SYNC_FLUSH 同步刷盘

flushDiskType=ASYNC_FLUSH

# 发消息线程池数量

# sendMessageThreadPoolNums=128

# 拉消息线程池数量

# pullMessageThreadPoolNums=128

6.启动broker容器

docker run -d --restart=always --name rmqbroker01  \

--link rmqnamesrv:namesrv \

-p 10911:10911 -p 10909:10909  \

-v /usr/local/rocketmq/broker/logs:/root/logs \

-v /usr/local/rocketmq/broker/store:/root/store  \

-v  /usr/local/rocketmq/broker/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf  \

-e "NAMESRV_ADDR=namesrv:9876"   \

rocketmqinc/rocketmq \

sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf

docker ps查看nameserver和broker,发现均已成功启动

docker ps

7.安装rocketmq-console可视化界面

docker pull pangliang/rocketmq-console-ng

8.构建rocketmq-console容器并启动

docker run -d --restart=always --name rmqadmin -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.7.46:9876 -Dcom.rocketmqsendMessageWithVIPChannel=false"  -p 9999:8080  pangliang/rocketmq-console-ng

Drocketmq.namesrv.addr后面的IP地址改为nameserver IP地址

9.访问web控制台界面

打开浏览器访问地址 http://你的宿主机IP:9999可进行访问

至此,docker安装rocketMq服务安装完毕!

  • 11
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker是一种容器化平台,可以帮助开发者将应用程序及其依赖项打包成一个独立的容器,以便在不同的环境中进行部署和运行。而RocketMQ是一款开源的分布式消息中间件,具有高吞吐量、高可用性和可伸缩性的特点。 要在Docker安装RocketMQ,可以按照以下步骤进行操作: 1. 首先,确保你已经安装DockerDocker Compose。你可以在Docker官方网站上找到相应的安装指南。 2. 创建一个新的目录,用于存放RocketMQ的配置文件和数据。 3. 在该目录下创建一个名为`docker-compose.yml`的文件,并将以下内容复制到文件中: ```yaml version: '3' services: namesrv: image: rocketmqinc/rocketmq:4.8.0 container_name: rocketmq_namesrv ports: - 9876:9876 volumes: - ./data/namesrv/logs:/root/logs - ./data/namesrv/store:/root/store command: sh mqnamesrv broker: image: rocketmqinc/rocketmq:4.8.0 container_name: rocketmq_broker ports: - 10909:10909 - 10911:10911 environment: - NAMESRV_ADDR=namesrv:9876 volumes: - ./data/broker/logs:/root/logs - ./data/broker/store:/root/store command: sh mqbroker -c /opt/rocketmq-4.8.0/conf/broker.conf console: image: styletang/rocketmq-console-ng container_name: rocketmq_console ports: - 8080:8080 environment: - JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876 depends_on: - namesrv ``` 4. 保存并关闭`docker-compose.yml`文件。 5. 在终端中进入到该目录,并执行以下命令启动RocketMQ容器: ```bash docker-compose up -d ``` 6. 等待一段时间,RocketMQ容器将会启动并运行。你可以通过访问`http://localhost:8080`来访问RocketMQ的控制台。 至此,你已经成功在Docker安装RocketMQ。你可以使用RocketMQ的客户端工具或者编程语言的RocketMQ SDK来进行消息的发送和接收。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值