RocketMQ4.9.4通过docker-compose安装

一、安装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配置

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

网络配置属性

名称 描述 参数类型 默认值 有效值 重要性
accessMessageInMemorymaxRatio 访问消息在内存中的比率 int 40(%)
adminBrokerThreadPoolNums 服务端处理控制台管理命令线程池线程数量 int 16
autoCreateSubscriptionGroup 是否自动创建消费组 boolean true true/false
autoCreateTopicEnable 是否自动创建主题 boolean
bitMapLengthConsumeQueueExt ConsumeQueue扩展过滤bitmap大小 int 112
brokerClusterName Broker集群名称 String TestCluster
brokerFastFailureEnable 是否支持broker快速失败 如果为true表示会立即清除发送消息线程池,消息拉取线程池中排队任务 ,直接返回系统错误 boolean true
brokerId brokerID 0表示主节点 大于0表示从节点 int 0
brokerIP1 Broker服务地址 String
brokerIP2 BrokerHAIP地址,供slave同步消息的地址 String
brokerName Broker服务器名称morning服务器hostname String broker-a
brokerPermission Broker权限 默认为6表示可读可写 int 6
brokerRole broker角色,分为 ASYNC_MASTER SYNC_MASTER, SLAVE enum ASYNC_MASTER
brokerTopicEnable broker名称是否可以用做主体使用 boolean
channelNotActiveInterval long
checkCRCOnRecover 文件恢复时是否校验CRC boolean
cleanFileForciblyEnable 是否支持强行删除过期文件 boolean
cleanResourceInterval 清除过期文件线程调度频率 int
clientAsyncSemaphoreValue 客户端对invokeAsyncImpl方法的调用频率 int
clientCallbackExecutorThreads 客户端执行回调线程数 int
clientChannelMaxIdleTimeSeconds 客户端每个channel最大等待时间 int
clientCloseSocketIfTimeout 客户端关闭socket是否需要等待 boolean false
clientManagerThreadPoolQueueCapacity 客户端管理线程池任务队列初始大小 int 1000000
clientManageThreadPoolNums 服务端处理客户端管理(心跳 注册 取消注册线程数量) int 32
clientOnewaySemaphoreValue 客户端对invokeOnewayImpl方法的调用控制 int
clientPooledByteBufAllocatorEnable 客户端池化内存是否开启 boolean
clientSocketRcvBufSize 客户端socket接收缓冲区大小 long
clientSocketSndBufSize 客户端socket发送缓冲区大小 long
clientWorkerThreads worker线程数 int
clusterTopicEnable 集群名称是否可用在主题使用 boolean
commercialBaseCount
commercialBigCount
commercialEnable
commercialTimerCount
commitCommitLogLeastPages 一次提交至少需要脏页的数量,默认4页,针对 commitlog文件 int
commitCommitLogThoroughInterval Commitlog两次提交的最大间隔,如果超过该间隔,将忽略commitCommitLogLeastPages直接提交 int 200
commitIntervalCommitLog commitlog提交频率 int 200
compressedRegister 是否开启消息压缩 boolean
connectTimeoutMillis 链接超时时间 long 3000
consumerFallbehindThreshold 消息消费堆积阈值默认16GB在disableConsumeifConsumeIfConsumerReadSlowly为true时生效 long 17179869184
consumerManagerThreadPoolQueueCapacity 消费管理线程池任务队列大小 int 1000000
consumerManageThreadPoolNums 服务端处理消费管理 获取消费者列表 更新消费者进度查询消费进度等 int 32
debugLockEnable 是否支持 PutMessage Lock锁打印信息 boolean false
defaultQueryMaxNum 查询消息默认返回条数,默认为32 int 32
defaultTopicQueueNums 主体在一个broker上创建队列数量 int 8
deleteCommitLogFilesInterval 删除commitlog文件的时间间隔,删除一个文件后等一下再删除一个文件 int 100
deleteConsumeQueueFilesInterval 删除consumequeue文件时间间隔 int 100
deleteWhen 磁盘文件空间充足情况下,默认每天什么时候执行删除过期文件,默认04表示凌晨4点 string 04
destroyMapedFileIntervalForcibly 销毁MappedFile被拒绝的最大存活时间,默认120s。清除过期文件线程在初次销毁mappedfile时,如果该文件被其他线程引用,引用次数大于0.则设置MappedFile的可用状态为false,并设置第一次删除时间,下一次清理任务到达时,如果系统时间大于初次删除时间加上本参数,则将ref次数一次减1000,直到引用次数小于0,则释放物理资源 int 120000
disableConsumeIfConsumerReadSlowly 如果消费组消息消费堆积是否禁用该消费组继续消费消息 boolean false
diskFallRecorded 是否统计磁盘的使用情况,默认为true boolean true
diskMaxUsedSpaceRatio commitlog目录所在分区的最大使用比例,如果commitlog目录所在的分区使用比例大于该值,则触发过期文件删除 int 75
duplicationEnable 是否允许重复复制,默认为 false boolean false
enableCalcFilterBitMap 是否开启比特位映射 boolean false
enableConsumeQueueExt 是否启用ConsumeQueue扩展属性 boolean false
enablePropertyFilter 是否支持根据属性过滤 如果使用基于标准的sql92模式过滤消息则改参数必须设置为true boolean false
endTransactionPoolQueueCapacity 处理提交和回滚消息线程池线程队列大小 int
endTransactionThreadPoolNums 处理提交和回滚消息线程池 int 24
expectConsumerNumUseFilter 布隆过滤器参数 int 32
fastFailIfNoBufferInStorePool 从 transientStorepool中获取 ByteBuffer是否支持快速失败 boolean false
fetchNamesrvAddrByAddressServer 是否支持从服务器获取nameServer boolean false
fileReservedTime 文件保留时间,默认72小时,表示非当前写文件最后一次更新时间加上filereservedtime小与当前时间,该文件将被清理 String 120
filterDataCleanTimeSpan 清除过滤数据的时间间隔 long 86400000
filterServerNums broker服务器过滤服务器数量 int 0
filterSupportRetry 消息过滤是否支持重试 boolean false
flushCommitLogLeastPages 一次刷盘至少需要脏页的数量,针对commitlog文件 int 4
flushCommitLogTimed 表示await方法等待FlushIntervalCommitlog,如果为true表示使用Thread.sleep方法等待 boolean false
flushConsumeQueueLeastPages 一次刷盘至少需要脏页的数量,默认2页,针对 Consume文件 int 2
flushConsumeQueueThoroughInterval Consume两次刷盘的最大间隔,如果超过该间隔,将忽略 int 60000
flushConsumerOffsetHistoryInterval fushConsumeQueueLeastPages直接刷盘 int 60000
flushConsumerOffsetInterval 持久化消息消费进度 consumerOffse.json文件的频率ms int 5000
flushDelayOffsetInterval 延迟队列拉取进度刷盘间隔。默认10s long 10000
flushDiskType 刷盘方式,默认为 ASYNC_FLUSH(异步刷盘),可选值SYNC_FLUSH(同步刷盘) enum ASYNC_FLUSH
flushIntervalCommitLog commitlog刷盘频率 int 500
flushIntervalConsumeQueue consumuQueue文件刷盘频率 int 1000
flushLeastPagesWhenWarmMapedFile 用字节0填充整个文件的,每多少页刷盘一次。默认4096页,异步刷盘模式生效 int 4096

参考

  • https://rocketmq.apache.org/zh/docs/4.x/

你可能感兴趣的:(运维,docker,java-rocketmq,rocketmq)