RocketMQ4.7.0新特性

       三月24日(March 04, 2020)Apache RocketMQ发布了4.7.0最新版本。这次的新版本中增加了一个新特性(同步复制更改为管道方式)。同时也做了一些优化,包括防止客户端提交过于频繁,添加MessageExt的获取BrokerName方法等。修复的bug包括修复MessageClientIDSetter注入问题,修复关于异步发送重试的问题等。本文对部分更新进行翻译,然后补充一下最新的源码。(没办法每次都看英文版太累了,本文摘录了一部分自己感兴趣的内容。)


最新版本下载
Source: rocketmq-all-4.7.0-source-release.zip
Binary: rocketmq-all-4.7.0-bin-release.zip

一、新特性


1.1同步复制更改为管道方式。
1.2源码更新(部分内容)
https://github.com/apache/rocketmq/commit/64e4ca727dabc652edf0bf2e9188f80578d605f7

二、优化

2.3防止客户端提交过于频繁 2.2
https://github.com/apache/rocketmq/commit/35c38888e0d5678fb4aaad5ba8534b7552d9a9a0
2.4添加MessageExt。getBrokerName方法
https://github.com/apache/rocketmq/commit/d03e46a4cb0be50401a4fcd9132392a6dde43861

三、BUG修复


备注:3.1和3.2要放着一起看,3.2可以说是修复因为3.1修复引起的bug。
3.1修复MessageClientIDSetter注入错误的pid的错误



3.2修复MessageClientIDSetter#getIPFromID返回错误pid的错误

3.3修复关于异步发送重试的问题
        异步发送的重试次数并没有生效,因为在 方法中 MQClientAPIImpl#sendMessageAsync 发送失败后调用时 timeoutMillis 是0 ,导致后面超时判断直接判定超时,第一次重试就失败。
onExceptionImpl(brokerName, msg, 0L, request, sendCallback, topicPublishInfo, instance,
retryTimesWhenSendFailed, times, ex, context, true, producer);
       然后,在重试时会重置请求id,但是重置的方法和创建request时分配请求id的方法会导致出现反复id。incrementAndGet 和 getAndIncrement 一起使用了,导致其他请求的响应影响的异步发送的响应,导致回调函数没有执行,重试中断。

总结:

RocketMQ社区是个很有趣的地方。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值