生产者核心参数
producerGroup: 组名。一个应用(JVM)中组名不能重复。
defaultTopicQueueNums: 默认的topic对于Queue的数量,默认是4。
sendMsgTimeout: 生产者发送消息的超时时间。
compressMsgBodyOverHowmuch: 消息超过多大开始进行压缩,默认压缩字节4096。
retryTimesWhenSendFailed: 当消息发送失败时,重发次数。
retryAnotherBrokerWhenNotStoreOK: 当一个broker存储消息失败时,是否重发到其他broker。
maxMessageSize: 最大消息限制,默认128K。
主从同步机制解析
-
同步的信息
包含两部分:数据内容 + 元数据信息
-
数据内容
实时进行同步,同步的是commitlog中的数据,对实时性要求高,并且丢失数据就无法恢复。使用原生socket。
-
元数据信息
broker判断如果是slave节点,那么会启动定时任务不断同步,如果丢失也可以从其他地方重试获取。包含topic信息和offset等。使用netty同步。
元数据同步源码解析
首先由于是broker的数据同步,所以这部分代码是写在rocketmq-broker的模块中。是在handleSlaveSynchronize方法中通过定义了一个固定时间的定时任务,时间是1分钟执行一次,当然前提条件是broker节点的角色是slave,而broker节点是master时,如果有定时任务会取消,因为master是不用同步元数据信息。这个方法会有三个地方调用:1、broker刚刚启动 2、master切换成slave 3、slave切换成master。
handleSlaveSynchronize 源码
private void handleSlaveSynchronize(BrokerRole role) {
//判断broker角色 master或slave
if (role == BrokerRole.SLAVE) {
if (null != slaveSyncFuture) {
slaveSyncFuture.cancel(false)