zoukankan      html  css  js  c++  java
  • RocketMQ订阅关系不一致

    订阅关系不一致会有什么问题吗?

    阿里二面: 同一个消费组内的消费实例,如果订阅了相同的 topic,但是订阅的 tag 不一样,会有什么问题吗?

    测试配置消费实例1

    生产配置消费实例2

    阿里云--消息队列 RocketMQ 版

    会导致订阅关系不一致,导致消息丢失

     RocketMQ 要求同一个消费者Group ID下所有Consumer实例所订阅的Topic、Tag必须完全一致。订阅的同一个Topic中的Tag必须一致,包括Tag的数量和Tag的顺序。

    阿里云官方文档介绍——订阅关系一致

    为什么订阅关系不一致会导致消息丢失呢?

    为了提高消费效率,RocketMQ 引入了 ConsumeQueue,ConsumerQueue 中保存消息在 CommitLog 文件中的物理偏移量。ConsumerQueue 中的元素内容如下:

    (1)前8个字节记录消息在 CommitLog 中的偏移量。

    (2)中间4个字节记录消息消息大小。

    (3)最后8个字节记录消息中tag的 hashcode。

    这个tag的作用是过滤消息,假如一个 Consumer订阅了Topic1中的Tag1,那这个 Consumer拉取消息时,首先从Name Server获取订阅关系,得到当前Consumer订阅的所有tag的hashcode集合codeSet。每次从ConsumerQueue获取一条记录,就要判断最后8个字节 tag hashcode 是否在 codeSet 中,比如 Tag2 不在 codeSet 中,就会被过滤掉。

     <END>

    ⭐️希望本文章对您有帮助,您的「 转发、点赞 是我创作的无限动力。

    扫描下方二维码关注微信公众号,您会收到更多优质文章推送。

    希望本文章对您有帮助,您的转发、点赞是我的创作动力,十分感谢。更多好文推荐,请关注我的微信公众号--JustJavaIt
  • 相关阅读:
    Difference between sendRedirect, include, forward
    Selenium Study Notes
    Java基础知识2
    JSP上的JavaBeans
    Java Socket 7部曲
    Javascript版本排序1
    Java基础知识1
    JavaBean的属性
    测试基础
    annotation本质
  • 原文地址:https://www.cnblogs.com/liaowenhui/p/15717353.html
Copyright © 2011-2022 走看看