Rocketmq面试(一) Rocketmq同一个消费组订阅不同的Tag,会有什么问题?

这篇具有很好参考价值的文章主要介绍了Rocketmq面试(一) Rocketmq同一个消费组订阅不同的Tag,会有什么问题?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

先说结果:会造成数据丢失

再说依据:

RocketMQ要求同一个消费者组内的消费者必须订阅关系一致,如果订阅关系不一致会出现消息丢失的问题。

官网入口:订阅关系一致 | RocketMQ

不想看官网的,直接看结论

什么叫订阅关系一致

1.订阅的Topic相同,或者订阅的Topic相同 tag也相同,或者Topic相同,tag的顺序也相同。

Rocketmq面试(一) Rocketmq同一个消费组订阅不同的Tag,会有什么问题?

2.什么叫不一致呢?

就是订阅的Topic不同,或者Topic相同,但是Tag不同,或者Topic相同tag也相同,但是顺序不同

Rocketmq面试(一) Rocketmq同一个消费组订阅不同的Tag,会有什么问题?

 再说为什么会导致丢失数据呢?

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

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

  • 中间 4 个字节记录消息消息大小。

  • 最后 8 个字节记录消息中 tag 的 hashcode。

Rocketmq面试(一) Rocketmq同一个消费组订阅不同的Tag,会有什么问题?

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

Rocketmq面试(一) Rocketmq同一个消费组订阅不同的Tag,会有什么问题?

 如上图,比如Topic1里面有个TagA,TagB。 consumer1订阅了TagA,consumer订阅了TagB,那 Consumer1 从 ConsumeQueue1 和 ConsumeQueue2 消费消息时,就会把 TagB 中的消息过滤掉,这样即使 Consumer2 订阅了 TagB,也不能消费到 ConsumeQueue1 和 ConsumeQueue2 里 TagB 中的消息了。

最后一个问题,怎么看是不是存在订阅关系不一致的 现象?

问题描述

在使用消息队列RocketMQ版实例时,可能会出现订阅关系不一致的情况,具体的问题现象如下:

  • 消息队列RocketMQ版控制台中订阅关系是否一致显示为否。
  • 消费者(Consumer)实例未收到订阅的消息。

请参考以下步骤进行检查

您可在消息消息队列RocketMQ版控制台Group 详情页面查看指定Group的订阅关系是否一致。若查询结果不一致,请参见本文(3 常见订阅关系不一致问题)排查Consumer实例的消费代码。文章来源地址https://www.toymoban.com/news/detail-470169.html

  1. 检查您Consumer实例中与订阅相关的配置代码,确保配置同一个Group ID的所有Consumer实例均订阅相同的Topic及Tag。
  2. 重启客户端应用。
  3. 登录消息队列RocketMQ版控制台,在左侧导航栏中单击实例列表,选择您的目标实例,进入实例详情页面。
  4. 在左侧导航栏中单击Group管理,选择对应的协议后,单击消费者状态,确认订阅关系是否一致显示为是。
  5. 测试并确认消息能够被预期的Consumer实例所消费。

到了这里,关于Rocketmq面试(一) Rocketmq同一个消费组订阅不同的Tag,会有什么问题?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 为什么访问同一个网址却返回不同的内容

    哈喽大家好,我是咸鱼。今天给大家分享一个关于 HTTP 有趣的现象 链接:https://csvbase.com/meripaterson/stock-exchanges 我们用浏览器访问这个链接,可以看到下面的网页 但如果我们使用 curl 命令去访问这个链接呢? 可以看到返回的是一个 csv 文件 我们用 wget 命令下载下来看看 可以

    2024年02月03日
    浏览(63)
  • 【阿里云服务器数据迁移】 同一个账号 不同区域服务器

    假如说一台云服务器要过期了,现在新买了一台,有的人会烦恼又要将重新在新的服务器上装环境,部署上线旧服务器上的网站项目, 但是不必烦恼,本文将介绍如何快速将就旧的服务器上的数据迁移到新的服务器上. 包括所有的环境和网站项目噢 !  填写 镜像名称和描述. 选择自定

    2024年01月24日
    浏览(66)
  • Tomcat与Nginx多项目部署,同一个ip不同端口部署,完整教程

    多项目,同IP,不同端口部署访问。 部署一个PC项目,访问地址:http://192.168.31.1:8085/项目名称 部署一个dist项目,访问地址:http://192.168.31.1:8086/项目名称 注:以上只是举例! 之前没有这样的经验,也没有查到整合的资料,所以整合记录一下~ 不推荐低版本或最新版本,最新版

    2024年02月03日
    浏览(58)
  • 如何在rabbitmq中实现一个生产者,多个消费者,多个消费者都能收到同一条消息

    场景:用户登录,邀请其它用户进行视频会议,收到邀请的用户进入会议 rabbitmq实现思路: 选型:发布订阅模式(Publish/Subscribe) 一个生产者,多个消费者,每一个消费者都有自己的一个队列,生产者没有将消息直接发送到队列,而是发送到了交换机,每个队列绑定交换机,

    2023年04月25日
    浏览(50)
  • Java中不同对象调用该实例方法返回值是同一个地址空间吗?

    结论 不一定。 基本类型返回的是值 引用数据类型返回的是引用地址(是否同一个引用看是否用到常量池) \\\'==\\\' 基本类型比较的是两者的值是否相同 而引用类型比较两者的是引用地址是否相同 返回的值相同 \\\'==\\\'就为true 返回的引用地址相同 \\\'==\\\'就是true

    2023年04月25日
    浏览(49)
  • jmeter 不同请求使用同一个随机函数,线程数超过1后取值相同的解决方法

    jmeter 不同请求使用同一个随机函数,线程数超过1后取值相同的解决方法 目的:jmeter 中同一线程组的不同请求使用同一个随机函数,生成的随机数在不同请求中要是一样的,而且如果线程数大于1,每次迭代中的随机数要更新 1)如果只是在测试计划中添加这个变量-随机数函

    2024年02月14日
    浏览(54)
  • Django的mysql数据库问题:同一个模型(同一张表)中的不同记录也是可以相互关联的【使用“自引用关系”】

    是的,确实可以在Django的模型中使用外键来建立同一模型中不同记录之间的关联关系。这样的关联关系被称为自引用关系(self-referential relationship)或者自关联关系。通过在模型中定义外键字段,你可以使模型的实例与同一模型中的其他实例产生关联。 在Django中,这通常通过

    2024年01月18日
    浏览(61)
  • 【pytorch】同一个模型model.train()和model.eval()模式下的输出完全不同

    测试时为什么要使用model.eval() - 小筱痕 - 博客园 (cnblogs.com) 输出不同的原因是由于student模型中的某些层的行为不同。一些层,如dropout和batch normalization,在训练和评估过程中的行为是不同的。 在训练过程中,dropout层会随机将一部分输入置为零,这有助于防止过拟合。dropou

    2024年02月12日
    浏览(57)
  • SAP变式物料之采购<转载>,通过可配置物料实现同一个物料不同型号下采购订单的时候出现不同的价格

    原文链接:https://blog.csdn.net/weixin_42137700/article/details/125104140 SAP一般物料采购,一个物料只有一个价格,在采购定价的时候也是同一个物料对应一个价格,但是有些场景中,比如,一个电脑不同的型号,不同的内存价格是不一样的,这个时候就需要SAP的变式物料了,在下PO的时

    2024年01月20日
    浏览(55)
  • springboot整合rocketmq:一个消费者组怎么订阅多个topic

            一个消费者组中的所有消费者订阅关系,可以多个topic,多个tag,但是必须一致,否则就倒沫子了,如下图:  下面贴了如下结构的代码  一个消费组(消费者)订阅多个topic的代码(只写了一个消费组的,其他类似): 结果:

    2024年02月15日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包