1. RocketMQ 角色介绍


四个角色

  • Producer:消息生产者
  • Consumer:消费者
  • Broker:MQ 服务,负责接收、分发消息
  • NameServer:负责 MQ 服务之间的协调

2. RocketMQ 架构方案


image.png

NameServer Cluster

  • NameServer 提供轻量级服务发现和路由。
  • 每个名称服务器记录完整的路由信息,提供相应的读写服务,并支持快速存储扩展。

3. RocketMQ 集群部署配置


Broker 配置文件说明

  1. # 所属集群名字
  2. brokerClusterName=DefaultCluster
  3. # broker 名字,注意此处不同的配置文件填写的不一样
  4. brokerName=broker-a|broker-b
  5. # 0 表示 Master,>0 表示 Slave
  6. brokerId=0
  7. # nameServer 地址,分号分割
  8. namesrvAddr=10.10.1.31:9876;10.10.1.32:9876
  9. # 在发送消息时,自动创建服务器不存在的 topic,默认创建的队列数
  10. defaultTopicQueueNums=4
  11. # 是否允许 Broker 自动创建 Topic,建议线下开启,线上关闭
  12. autoCreateTopicEnable=true
  13. # 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
  14. autoCreateSubscriptionGroup=true
  15. # Broker 对外服务的监听端口
  16. listenPort=10911
  17. # 删除文件时间点,默认凌晨 4 点
  18. deleteWhen=04
  19. # 文件保留时间,默认 48 小时
  20. fileReservedTime=120
  21. # commitLog 每个文件的大小默认 1G
  22. mapedFileSizeCommitLog=1073741824
  23. # ConsumeQueue 每个文件默认存 30w 条,根据业务情况调整
  24. mapedFileSizeConsumeQueue=300000
  25. # destroyMapedFileIntervalFarcibly=120000
  26. # redeleteHangedFileInterval=120000
  27. # 检测物理文件磁盘空间
  28. diskMaxUsedSpaceRatio=88
  29. # 存储路径
  30. storePathRootDir=/usr/local/alibaba-rocketmq/store
  31. # commitLog 存储路径
  32. storePathCommitLog=/usr/local/alibaba-rocketmq/store/commitlog
  33. # 消费队列存储路径
  34. storePathConsumeQueue=/usr/local/alibaba-rocketmq/store/consumequeue
  35. # 消费索引存储路径
  36. storePathIndex=/usr/local/alibaba-rocketmq/store/index
  37. # checkpoint 文件存储路径
  38. storeCheckpoint=/usr/local/alibaba-rocketmq/store/checkpoint
  39. # abort 文件存储路径
  40. abortFile=/usr/local/alibaba-rocketmq/store/abort
  41. # 限制的消息大小
  42. maxMessageSize=65536
  43. # flushCommitLogLeastPages=4
  44. # flushConsumeQueueLeastPages=2
  45. # flushCommitLogThoroughInterval=10000
  46. # flushConsumeQueueThoroughInterval=60000
  47. # Broker 的角色
  48. # - ASYNC_MASTER 异步复制 Master
  49. # - SYNC_MASTER 同步双写 Master
  50. # - SLAVE
  51. brokerRole=ASYNC_MASTER
  52. # 刷盘方式
  53. # - ASYNC_FLUSH 异步刷盘
  54. # - SYNC_FLUSH 同步刷盘
  55. flushDiskType=ASYNC_FLUSH
  56. # checkTransactionMessageEnable=false
  57. # 发消息线程池数量
  58. # sendMessageThreadPoolNums=128
  59. # 拉消息线程池数量
  60. pullMessageThreadPoolNums=128