Appearance
在经过RocketMQ入门实战后,我们学会了如何进行最基本的发送和接收消息,在RocketMQ中对消息生产者有着大量的配置,这里对常见配置进行了汇总,可在项目中按需选择使用。
生产者常见核心配置
- compressMsgBodyOverHowmuch :消息超过默认字节4096后进行压缩
- retryTimesWhenSendFailed : 失败重发次数
- maxMessageSize : 最大消息配置,默认128k
- topicQueueNums : 主题下面的队列数量,默认是4
- autoCreateTopicEnable : 是否自动创建主题Topic, 开发建议为true,生产要为false
- defaultTopicQueueNums : 自动创建服务器不存在的topic,默认创建的队列数
- autoCreateSubscriptionGroup: 是否允许 Broker 自动创建订阅组,建议线下开发开启,线上关闭
- brokerClusterName : 集群名称
- brokerId : 0表示Master主节点 大于0表示从节点
- brokerIP1 : Broker服务地址
- brokerRole : broker角色 ASYNC_MASTER/ SYNC_MASTER/ SLAVE
- deleteWhen : 每天执行删除过期文件的时间,默认每天凌晨4点
- flushDiskType :刷盘策略, 默认为 ASYNC_FLUSH(异步刷盘), 另外是SYNC_FLUSH(同步刷盘)
- listenPort : Broker监听的端口号
- mapedFileSizeCommitLog : 单个conmmitlog文件大小,默认是1GB
- mapedFileSizeConsumeQueue:ConsumeQueue每个文件默认存30W条,可以根据项目调整
- storePathRootDir : 存储消息以及一些配置信息的根目录 默认为用户的 ${HOME}/store
- storePathCommitLog:commitlog存储目录默认为${storePathRootDir}/commitlog
- storePathIndex: 消息索引存储路径
- syncFlushTimeout : 同步刷盘超时时间
- diskMaxUsedSpaceRatio : 检测可用的磁盘空间大小,超过后会写入报错
消息常见发送状态
- 消息发送有同步和异步
TIP
Broker消息投递状态
- FLUSH_DISK_TIMEOUT:没有在规定时间内完成刷盘 (刷盘策略需要为SYNC_FLUSH 才会出这个错误)
- FLUSH_SLAVE_TIMEOUT:主从模式下,broker是SYNC_MASTER, 没有在规定时间内完成主从同步
- SLAVE_NOT_AVAILABLE:从模式下,broker是SYNC_MASTER, 但是没有找到被配置成Slave的Broker
- SEND_OK:发送成功,没有发生上面的三种问题