安装包安装

下载:

  1. wget https://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.5.1/rocketmq-all-4.5.1-bin-release.zip

解压:

  1. unzip rocketmq-all-4.5.1-bin-release.zip -d rocketmq-all

进入目录:

  1. cd rocketmq-all-4.5.1-bin-release

调整默认的内存大小参数:

  1. cd bin/
  2. vim runserver.sh
  3. JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
  4. vim runbroker.sh
  5. JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m"

启动nameserver:

  1. nohup bin/mqnamesrv -n 192.168.56.100:9876 > namesrv.log & #后台启动
  2. # The Name Server boot success. serializeType=JSON 看到这个表示已经提供成功

修改conf/broker.conf,添加:

  1. brokerIP1=192.168.56.100
  2. namesrvAddr=192.168.56.100:9876

启动broker:

  1. nohup bin/mqbroker -c conf/broker.conf > broker.log & #-n 指定nameserver地址和端口
  2. The broker[devops, 192.168.56.100:10911] boot success. serializeType=JSON and name server is 192.168.56.100:9876

发送消息测试:

  1. export NAMESRV_ADDR=192.168.56.100:9876
  2. cd bin
  3. sh tools.sh org.apache.rocketmq.example.quickstart.Producer

测试接收消息:

  1. sh tools.sh org.apache.rocketmq.example.quickstart.Consumer

docker安装

拉取镜像

  1. docker pull foxiswho/rocketmq:server-4.5.1
  2. docker pull foxiswho/rocketmq:broker-4.5.1

创建nameserver容器:

  1. docker create -p 9876:9876 --name rmqserver \
  2. -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" \
  3. -e "JAVA_OPTS=-Duser.home=/opt" \
  4. -v /data/rocketmq/rmqserver/logs:/opt/logs \
  5. -v /data/rocketmq/rmqserver/store:/opt/store \
  6. foxiswho/rocketmq:server-4.5.1

创建broker容器

  1. docker create -p 10911:10911 -p 10909:10909 --name rmqbroker \
  2. -e "JAVA_OPTS=-Duser.home=/opt" \
  3. -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" \
  4. -v /data/rocketmq/rmqbroker/conf/broker.conf:/etc/rocketmq/broker.conf \
  5. -v /data/rocketmq/rmqbroker/logs:/opt/logs \
  6. -v /data/rocketmq/rmqbroker/store:/opt/store \
  7. foxiswho/rocketmq:broker-4.5.1

/data/rocketmq/rmqbroker/conf/broker.conf如下:

  1. # 所属集群名字
  2. brokerClusterName = DefaultCluster
  3. # broker 名字,注意此处不同的配置文件填写的不一样,如果在 broker-a.properties 使用: broker-a,
  4. # 在 broker-b.properties 使用: broker-b
  5. brokerName = broker-a
  6. # 0 表示 Master,> 0 表示 Slave
  7. brokerId = 0
  8. #启动IP
  9. brokerIP1=192.168.56.100
  10. # nameServer地址,分号分割
  11. namesrvAddr=192.168.56.100:9876
  12. # 在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
  13. defaultTopicQueueNums=4
  14. # 是否允许 Broker 自动创建 Topic,建议线下开启,线上关闭 !!!
  15. autoCreateTopicEnable=true
  16. # 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
  17. autoCreateSubscriptionGroup=true
  18. # 开启过滤
  19. enablePropertyFilter = true
  20. # 删除文件时间点,默认凌晨4点
  21. deleteWhen = 04
  22. # 文件保留时间,默认48小时
  23. fileReservedTime = 48
  24. # commitLog 每个文件的大小默认1G
  25. mapedFileSizeCommitLog=1073741824
  26. # ConsumeQueue 每个文件默认存 30W 条,根据业务情况调整
  27. mapedFileSizeConsumeQueue=300000
  28. # destroyMapedFileIntervalForcibly=120000
  29. # redeleteHangedFileInterval=120000
  30. # 检测物理文件磁盘空间
  31. diskMaxUsedSpaceRatio=88
  32. # 限制的消息大小
  33. maxMessageSize=65536
  34. # Broker 的角色
  35. # - ASYNC_MASTER 异步复制Master
  36. # - SYNC_MASTER 同步双写Master
  37. # - SLAVE
  38. brokerRole = ASYNC_MASTER
  39. # 刷盘方式
  40. # - ASYNC_FLUSH 异步刷盘
  41. # - SYNC_FLUSH 同步刷盘
  42. flushDiskType = ASYNC_FLUSH
  43. # 发消息线程池数量
  44. # sendMessageThreadPoolNums=128
  45. # 拉消息线程池数量
  46. # pullMessageThreadPoolNums=128

启动容器

  1. docker start rmqserver rmqbroker

停止删除容器

  1. docker rm -f rmqbroker rmqserver

RocketMQ的管理工具

  1. docker pull styletang/rocketmq-console-ng:latest

创建并启动容器

  1. docker run -d --name rmqconsole -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.56.100:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8082:8080 -t styletang/rocketmq-console-ng:latest

通过浏览器进行访问:http://192.168.56.100:8082/#/

docker-compose安装

docker-compose.yml:

  1. version: '3.5'
  2. services:
  3. rmqnamesrv:
  4. image: foxiswho/rocketmq:server
  5. container_name: rmqnamesrv
  6. ports:
  7. - 9876:9876
  8. volumes:
  9. - /data/rocketmq/rmqserver/logs:/opt/logs
  10. - /data/rocketmq/rmqserver/store:/opt/store
  11. environment:
  12. JAVA_OPTS: " -Duser.home=/opt"
  13. JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
  14. networks:
  15. rmq:
  16. aliases:
  17. - rmqnamesrv
  18. rmqbroker:
  19. image: foxiswho/rocketmq:broker
  20. container_name: rmqbroker
  21. ports:
  22. - 10909:10909
  23. - 10911:10911
  24. volumes:
  25. - /data/rocketmq/rmqbroker/logs:/opt/logs
  26. - /data/rocketmq/rmqbroker/store:/opt/store
  27. - /data/rocketmq/rmqbroker/brokerconf/broker.conf:/etc/rocketmq/broker.conf
  28. environment:
  29. NAMESRV_ADDR: "rmqnamesrv:9876"
  30. JAVA_OPTS: " -Duser.home=/opt"
  31. JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
  32. command: mqbroker -c /etc/rocketmq/broker.conf
  33. depends_on:
  34. - rmqnamesrv
  35. networks:
  36. rmq:
  37. aliases:
  38. - rmqbroker
  39. rmqconsole:
  40. image: styletang/rocketmq-console-ng
  41. container_name: rmqconsole
  42. ports:
  43. - 8082:8080
  44. environment:
  45. JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
  46. depends_on:
  47. - rmqnamesrv
  48. networks:
  49. rmq:
  50. aliases:
  51. - rmqconsole
  52. networks:
  53. rmq:
  54. name: rmq
  55. driver: bridge