当前位置: 首页 > 工具软件 > docker-sync > 使用案例 >

RocketMQ4.9.4通过docker-compose安装

韩飞翮
2023-12-01

一、安装docker

1)安装docker

# 删除旧版本
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
# 设置源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装指定版本
curl https://releases.rancher.com/install-docker/18.09.sh | sh
# 开机启动
systemctl enable docker

2)安装docker-compose

sudo curl -L https://github.com/docker/compose/releases/download/1.25.1-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose \
&& chmod +x /usr/local/bin/docker-compose

或者

curl -L "https://get.daocloud.io/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
## 加上许可权限
chmod +x /usr/local/bin/docker-compose

二、安装rocketmq

1、准备配置文件

1)创建 docker-compose.yml

version: '3'
services: 
 # rocket mq name server
  rmqnamesrv:
    image: apache/rocketmq:4.9.4
    restart: always
    container_name: rocket-server
    # environment:
    #   JAVA_OPT_EXT: "-server -Xms64m -Xmx64m -Xmn64m"
    # volumes:
      # 映射本地目录权限一定要设置为 777 权限,否则启动不成功
      # - ../volumes/data/rocket/server/logs:/home/rocketmq/logs
    networks:
      - rocketmq
    ports:
      - 9876:9876
    command: sh mqnamesrv
  # rocket mq broker
  rmqbroker:
    image: apache/rocketmq:4.9.4
    restart: always
    container_name: rocket-broker
    volumes:
      # 映射本地目录权限一定要设置为 777 权限,否则启动不成功
      # - ../volumes/data/rocket/broker/logs:/home/rocketmq/logs
      # - ../volumes/data/rocket/broker/store:/home/rocketmq/store
      - ./config/broker.conf:/opt/rocketmq-4.9.4/conf/broker.conf
    environment:
      - NAMESRV_ADDR=rmqnamesrv:9876
      # - JAVA_OPTS:=-Duser.home=/opt
      - JAVA_OPT_EXT=-server -Xms64m -Xmx64m -Xmn64m
    depends_on:
      - rmqnamesrv
    networks:
      - rocketmq
    ports:
      - 10909:10909
      - 10911:10911
    command: sh mqbroker -c /opt/rocketmq-4.9.4/conf/broker.conf
  # rocket console 这个可以不需要
  rmqdashboard:
    image: apacherocketmq/rocketmq-dashboard:1.0.0
    restart: always
    container_name: rocket-dashboard
    environment:
      - JAVA_OPTS=-Drocketmq.config.namesrvAddr=rmqnamesrv:9876 -Dserver.port=8180 -Drocketmq.config.isVIPChannel=false
      # - JAVA_OPT_EXT=-Xms128m -Xmx128m -Xmn128m
    depends_on:
      - rmqnamesrv
    networks:
      - rocketmq
    ports:
      - 8180:8180
networks: 
  rocketmq:
    driver: bridge

2)在同级文件夹创建目录config,并在里面创建文件broker.conf,文件内容如下:

brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
## 注意:brokerIP1 要设置成自己服务器的ip
brokerIP1=192.168.56.110

注意:brokerIP1 要设置成自己服务器的ip

2、启动

启动过程中会自动下载相关镜像

docker-compose -f docker-compose.yml up -d

3、停止

docker-compose -f docker-compose.yml down

4、访问

启动成功后,在浏览器中输入 http://IP地址:8180 ,可访问rocketmq控制台

三、服务端配置

NameServer配置

名称描述参数类型默认值有效值重要性
rocketmqHomeRocketMQ主目录,默认用户主目录String
namesrvAddrNameServer地址String
kvConfigpathkv配置文件路径,包含顺序消息主题的配置信息String
configStorePathNameServer配置文件路径,建议使用-c指定NameServer配置文件路径String
clusterTest是否支持集群测试,默认为falseboolean
orderMessageEnable是否支持顺序消息,默认为falseboolean

网络配置属性

名称描述参数类型默认值有效值重要性
accessMessageInMemorymaxRatio访问消息在内存中的比率int40(%)
adminBrokerThreadPoolNums服务端处理控制台管理命令线程池线程数量int16
autoCreateSubscriptionGroup是否自动创建消费组booleantruetrue/false
autoCreateTopicEnable是否自动创建主题boolean
bitMapLengthConsumeQueueExtConsumeQueue扩展过滤bitmap大小int112
brokerClusterNameBroker集群名称StringTestCluster
brokerFastFailureEnable是否支持broker快速失败 如果为true表示会立即清除发送消息线程池,消息拉取线程池中排队任务 ,直接返回系统错误booleantrue
brokerIdbrokerID 0表示主节点 大于0表示从节点int0
brokerIP1Broker服务地址String
brokerIP2BrokerHAIP地址,供slave同步消息的地址String
brokerNameBroker服务器名称morning服务器hostnameStringbroker-a
brokerPermissionBroker权限 默认为6表示可读可写int6
brokerRolebroker角色,分为 ASYNC_MASTER SYNC_MASTER, SLAVEenumASYNC_MASTER
brokerTopicEnablebroker名称是否可以用做主体使用boolean
channelNotActiveIntervallong
checkCRCOnRecover文件恢复时是否校验CRCboolean
cleanFileForciblyEnable是否支持强行删除过期文件boolean
cleanResourceInterval清除过期文件线程调度频率int
clientAsyncSemaphoreValue客户端对invokeAsyncImpl方法的调用频率int
clientCallbackExecutorThreads客户端执行回调线程数int
clientChannelMaxIdleTimeSeconds客户端每个channel最大等待时间int
clientCloseSocketIfTimeout客户端关闭socket是否需要等待booleanfalse
clientManagerThreadPoolQueueCapacity客户端管理线程池任务队列初始大小int1000000
clientManageThreadPoolNums服务端处理客户端管理(心跳 注册 取消注册线程数量)int32
clientOnewaySemaphoreValue客户端对invokeOnewayImpl方法的调用控制int
clientPooledByteBufAllocatorEnable客户端池化内存是否开启boolean
clientSocketRcvBufSize客户端socket接收缓冲区大小long
clientSocketSndBufSize客户端socket发送缓冲区大小long
clientWorkerThreadsworker线程数int
clusterTopicEnable集群名称是否可用在主题使用boolean
commercialBaseCount
commercialBigCount
commercialEnable
commercialTimerCount
commitCommitLogLeastPages一次提交至少需要脏页的数量,默认4页,针对 commitlog文件int
commitCommitLogThoroughIntervalCommitlog两次提交的最大间隔,如果超过该间隔,将忽略commitCommitLogLeastPages直接提交int200
commitIntervalCommitLogcommitlog提交频率int200
compressedRegister是否开启消息压缩boolean
connectTimeoutMillis链接超时时间long3000
consumerFallbehindThreshold消息消费堆积阈值默认16GB在disableConsumeifConsumeIfConsumerReadSlowly为true时生效long17179869184
consumerManagerThreadPoolQueueCapacity消费管理线程池任务队列大小int1000000
consumerManageThreadPoolNums服务端处理消费管理 获取消费者列表 更新消费者进度查询消费进度等int32
debugLockEnable是否支持 PutMessage Lock锁打印信息booleanfalse
defaultQueryMaxNum查询消息默认返回条数,默认为32int32
defaultTopicQueueNums主体在一个broker上创建队列数量int8
deleteCommitLogFilesInterval删除commitlog文件的时间间隔,删除一个文件后等一下再删除一个文件int100
deleteConsumeQueueFilesInterval删除consumequeue文件时间间隔int100
deleteWhen磁盘文件空间充足情况下,默认每天什么时候执行删除过期文件,默认04表示凌晨4点string04
destroyMapedFileIntervalForcibly销毁MappedFile被拒绝的最大存活时间,默认120s。清除过期文件线程在初次销毁mappedfile时,如果该文件被其他线程引用,引用次数大于0.则设置MappedFile的可用状态为false,并设置第一次删除时间,下一次清理任务到达时,如果系统时间大于初次删除时间加上本参数,则将ref次数一次减1000,直到引用次数小于0,则释放物理资源int120000
disableConsumeIfConsumerReadSlowly如果消费组消息消费堆积是否禁用该消费组继续消费消息booleanfalse
diskFallRecorded是否统计磁盘的使用情况,默认为truebooleantrue
diskMaxUsedSpaceRatiocommitlog目录所在分区的最大使用比例,如果commitlog目录所在的分区使用比例大于该值,则触发过期文件删除int75
duplicationEnable是否允许重复复制,默认为 falsebooleanfalse
enableCalcFilterBitMap是否开启比特位映射booleanfalse
enableConsumeQueueExt是否启用ConsumeQueue扩展属性booleanfalse
enablePropertyFilter是否支持根据属性过滤 如果使用基于标准的sql92模式过滤消息则改参数必须设置为truebooleanfalse
endTransactionPoolQueueCapacity处理提交和回滚消息线程池线程队列大小int
endTransactionThreadPoolNums处理提交和回滚消息线程池int24
expectConsumerNumUseFilter布隆过滤器参数int32
fastFailIfNoBufferInStorePool从 transientStorepool中获取 ByteBuffer是否支持快速失败booleanfalse
fetchNamesrvAddrByAddressServer是否支持从服务器获取nameServerbooleanfalse
fileReservedTime文件保留时间,默认72小时,表示非当前写文件最后一次更新时间加上filereservedtime小与当前时间,该文件将被清理String120
filterDataCleanTimeSpan清除过滤数据的时间间隔long86400000
filterServerNumsbroker服务器过滤服务器数量int0
filterSupportRetry消息过滤是否支持重试booleanfalse
flushCommitLogLeastPages一次刷盘至少需要脏页的数量,针对commitlog文件int4
flushCommitLogTimed表示await方法等待FlushIntervalCommitlog,如果为true表示使用Thread.sleep方法等待booleanfalse
flushConsumeQueueLeastPages一次刷盘至少需要脏页的数量,默认2页,针对 Consume文件int2
flushConsumeQueueThoroughIntervalConsume两次刷盘的最大间隔,如果超过该间隔,将忽略int60000
flushConsumerOffsetHistoryIntervalfushConsumeQueueLeastPages直接刷盘int60000
flushConsumerOffsetInterval持久化消息消费进度 consumerOffse.json文件的频率msint5000
flushDelayOffsetInterval延迟队列拉取进度刷盘间隔。默认10slong10000
flushDiskType刷盘方式,默认为 ASYNC_FLUSH(异步刷盘),可选值SYNC_FLUSH(同步刷盘)enumASYNC_FLUSH
flushIntervalCommitLogcommitlog刷盘频率int500
flushIntervalConsumeQueueconsumuQueue文件刷盘频率int1000
flushLeastPagesWhenWarmMapedFile用字节0填充整个文件的,每多少页刷盘一次。默认4096页,异步刷盘模式生效int4096

参考

  • https://rocketmq.apache.org/zh/docs/4.x/
 类似资料: