为啥要取两者之间的较小值?

fa175bab952bea49d63fab1967fb1ec2.png我看代码的时候发现有这么一个提交 说是当客户端指定分区大于服务端topic时取较小的那个,我不是很清楚为什么要这么做,我感觉取服务端的topic大小不才是最准确的吗。所以想看下#212那个issue到底发现了什么问题 才要这么做 为啥要取两者之间的较小值?

展开
收起
圆葱猪肉包 2023-03-27 10:28:57 281 分享 版权
3 条回答
写回答
取消 提交回答
  • 这个case不好追溯了。不过自动创建Topic 这个链路是非常明确的,不适合生产环境。生产环境,资源的CRUD管理还是要严格遵守。否则就会产生这种细节上的纠结。内部的约定很难被业务方理解的。此答案整理自钉群“群1-Apache RocketMQ 中国开发 者钉钉群”

    2023-03-28 10:46:46
    赞同 展开评论
  • 取最小值本质上是为了容错准备的,每次能够保证消息一定是通过最小的分区路由过去的。

    2023-03-27 11:50:23
    赞同 展开评论
  • 月移花影,暗香浮动

    这种情况是为了防止客户端在指定分区时输入错误的分区号。如果服务端的topic只有3个分区,而客户端却指定了4个分区,这将导致客户端的消息无法正确发送到服务端。所以服务端为了避免这种情况,会自动取客户端指定的分区号与服务端topic中分区号的较小值作为实际的分区号来发送消息。这样可以保证消息被正确地路由到正确的分区。

    2023-03-27 10:44:11
    赞同 展开评论

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系列产品 Serverless 化。RocketMQ 中文社区:https://rocketmq-learning.com/

收录在圈子:
+ 订阅
阿里云 云原生应用平台 肩负阿里巴巴集团基础设施云化以及核心技术互联网化的重要职责,致力于打造稳定、标准、先进的云原生产品,成为云原生时代的引领者,推动行业全面想云原生的技术升级,成为阿里云新增长引擎。商业化产品包括容器、云原生中间件、函数计算等。
还有其他疑问?
咨询AI助理