rocketmq-client-go注册消费者组的问题

一、前言

      test环境服务启动,通过代码新注册一个customer group进行消费,服务一直报错如下:

level=error msg="fetch offset of mq from broker error" 
MessageQueue="MessageQueue [topic=xxx, brokerName=broker-a, queueId=1]"consumerGroup=xxx underlayError="broker response code: 22, remarks: Not found, V3_0_6_SNAPSHOT maybe this group consumer boot first"

      奇怪的点在于,dev环境相同的代码,是可以注册成功并且消费的,而且运维也登上去通过命令行发送和消费过消息,确认开发环境是ok的。

二、来自chatgpt的回答

Broker 返回状态码 "22",并且附加了错误信息 "Not found,V3_0_6_SNAPSHOT maybe this group consumer boot first"。
这意味着该 Consumer Group 可能是第一次启动,并且 Broker 端
还没有关于它的相关记录

      也就是说,这个broker 22 错误是新注册customer group后会经常出现的,因为新的customer group要和broker同步offset,同步之后就会成功。然而实际上服务起了一夜,还是一直报这个错误。猜测是一直轮询,但是每次同步offset就报错了。

三、go客户端为什么一直报错

1、rocketmq客户端问题

参考:
https://github.com/apache/rocketmq-client-go/pull/886
https://github.com/apache/rocketmq-client-go/issues/993

      经过一顿搜索,终于在官方的issue上发现有这个提问,具体链接如上。可以看到,gorocketmq-client-go在新customer group的情况下,同步offset会返回error
在这里插入图片描述
error会导致我们收到上面的错误打印。

		off, err := r.fetchConsumeOffsetFromBroker(r.group, mq)if err != nil {rlog.Error("fetch offset of mq from broker error", map[string]interface{}{rlog.LogKeyConsumerGroup: r.group,rlog.LogKeyMessageQueue:  mq.String(),rlog.LogKeyUnderlayError: err,})r.mutex.RUnlock()return -1, err}

2、rocketmq客户端社区的修复

      rocketmq-client-go社区已经修复了这个问题,在找不到consumer group的时候,返回-1nil,这样就不会报出来错误,阻塞下面的流程。

if res.Code == internal.ResQueryNotFound {return -1, nil}// 函数外处理,把offset注册到OffsetTable这个map中
// OffsetTable map[primitive.MessageQueue]int64
// key是mq的消费队列,value是offset值。把offset=-1挂到我们新group对应的mq queue实例上,
// 接下来就可以同步offset了
func (r *remoteBrokerOffsetStore) update(mq *primitive.MessageQueue, offset int64, increaseOnly bool) {r.mutex.Lock()defer r.mutex.Unlock()localOffset, exist := r.OffsetTable[*mq]if !exist {r.OffsetTable[*mq] = offsetreturn}if increaseOnly {if localOffset < offset {r.OffsetTable[*mq] = offset}} else {r.OffsetTable[*mq] = offset}
}

      有兴趣的同学可以看看java的实现,还是挺清晰的,代码地址:https://github.com/apache/rocketmq/blob/develop/client/src/main/java/org/apache/rocketmq/client/consumer/store/RemoteBrokerOffsetStore.java#L228

四、为什么dev环境是可以正常消费

      百思不得其解,明明是同一套代码。。后来问了运维,原来dev环境服务刚启动也是报错的状态,然后运维手动去发送了命令,并通过新customer group消费了一次,后来服务就可以成功消费了。

RocketMQ 的 Consumer 连接上 Broker 之后,会自动拉取消息消费进度。Consumer 向 Broker 
发送拉取消息的请求时会携带该 Consumer Group 对应的每个 Message Queue 消费进度,Broker 
会根据这些消费进度返回还未被消费的消息给 Consumer,并将实际消费进度保存到 Consumer 所在的
Consumer Group 的消费进度表中。

      也就是说,命令行之行的时候,自动进行了consumeroffset同步。。。

五、最终的解决方案

1、升级rocket-rocket-go为master版本

master版本已经修复了这个问题

go get github.com/apache/rocketmq-client-go/v2@master
// 下面是我现在的go.mod
//github.com/apache/rocketmq-client-go/v2 v2.1.2-0.20230518020902-2a8172bb9174

      升级master毕竟不是稳定版本,可能会有问题,更多是临时方案,后续还是要安装社区稳定版本的。

2、登录rocketmq实例,手动发送消息

手动发送并消费消息,相当于使用rocketmq官方的client来同步offset,这样就绕开了rocketmq-client-go的这个bug。消费者注册完成后,接下来就可以顺利的消费了。

3、提前创建好consumer group

不要通过代码创建,一了百了

end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/11614.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

django csrfMiddleware的一些理解跨站和跨域

目录 术语为什么要有同源策略同源策略&#xff1a;同源策略的限制:同源策略作用:为什么能防csrf csrf攻击的特点Django中csrf token验证原理问题引入解答 chatgpt——Q&A1. django 的csrf可以防御csrf攻击&#xff0c;单前后端分离使用djangorestframework时&#xff0c;dr…

ChatGPT“保姆级教程”——手把手教你5分钟快速AI智能文字转爆款视频(剪映+百度AIGC平台)

目录 前言ChatGPT 剪映ChatGPT生成视频文档安装专业版剪映使用剪映一键出片保姆集教程 百度AIGC平台注册百度AIGC平台使用百度AIGC平台一键出片保姆集教程 总结其它资料下载 前言 在这个数字时代&#xff0c;视频已经成为了最流行的内容形式之一。而如何自动将文字转化为引人…

短短 5 天,Python 开发的“Twitter 杀手”Threads 用户过亿,增幅猛超 ChatGPT,马斯克暴怒!...

整理 | 屠敏 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一场看不见硝烟的社交媒体大战正在国外上演。 一方是发展已有 17 年&#xff0c;被马斯克接手不到一年的老牌平台 Twitter。根据在线统计数据门户 Statista 的数据显示&#xff0c;截至 2022 年 12 月&…

Bcompare.exe应用程序发生错误

Beyond Compare bcompare&#xff0c;即Beyond Compare 是一个综合的比对工具。 可比对的对象包括纯文字档、资料夹、zip 压缩案、FTP 站&#xff0c;等等。 您可以使用它管理您的原始档、保持比对资料夹同步、比对程式的输出结果、以及检查所烧入光碟备份的精确度。Beyond Co…

chatgpt出现unable to load history问题应该怎么办

在使用chatgpt时出现如下页面 左栏是unable to load history&#xff0c;右栏会回答Error并带有红色感叹号&#xff0c;换了很多节点还是这样&#xff0c;请问应该怎么解决呀&#xff1f;

电脑应用程序发生异常怎么办?

有时候我们打开电脑上面的某个软件时&#xff0c;会打不开&#xff0c;并且会弹出如下的错误提示“应用程序发生异常 未知的软件异常&#xff08;&#xff58;&#xff58;&#xff58;&#xff09;&#xff0c;位置为&#xff58;&#xff58;”。相信大多数的人在使用电脑的时…

应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志,或使用命令行sxstrace.exe工具。解决方法

【原创】 转载请注明出处 问题解决方法仅限于我的情况&#xff0c;就当给大家个提示。 我的电脑环境&#xff1a;Windows 7 64位 编译器环境&#xff1a;VS2005 出现这个问题可能是因为引用了MFC的东西&#xff0c;并且工程设置为 在共享DLL中使用MFC 【解决方法一】&am…

已解决chatgpt报错出了些问题。如果此问题仍然存在,请通过我们的帮助中心 help.openai.com 与我们联系。

已解决chatgpt报错出了些问题。如果此问题仍然存在&#xff0c;请通过我们的帮助中心 help.openai.com 与我们联系。 文章目录 报错问题报错原因解决方法千人全栈VIP答疑群联系博主帮忙解决报错 报错问题 粉丝群里面的一个小伙伴遇到问题跑来私信我&#xff0c;想用chatgpt&…

【回答问题】ChatGPT上线了!用给写出可执行的实体链接模型

如何实现一个实体链接模型/代码 在实现实体链接模型之前,您需要确定所要链接的实体类型(例如人名、地名、组织机构等)。然后,您需要准备一份包含大量实体及其相应识别码的实体百科数据集。接着,您可以使用深度学习模型对数据集进行训练,从而使模型能够在文本中识别出实体…

在没有魔法的情况下,如果让ChatGPT帮我们写代码

ChatGPT写代码 ✋ChatGPT 是一个基于人工智能的自然语言处理模型&#xff0c;可以帮助程序员更高效地、更自然地与计算机交互。ChatGPT 可以解决程序员在日常开发中遇到的各种问题&#xff0c;例如语法错误、API 使用、代码实现、架构设计等等。 &#x1f4a5;通过与 ChatGPT…

魔法打败魔法!AutoGPT帮写代码驯服ChatGPT

碳基生命永远在想办法偷懒&#xff0c; 近来觉得把任务用提示词准确描述给ChatGPT&#xff0c;输出Code也很累 终于蹲到了魔法杖 GitHub上大火的AutoGPT有了网页版 能自动调用ChatGPT&#xff08;3.5&#xff09; 输入自然语言&#xff0c;拆解任务&#xff0c;分段输出 用它来…

ChatGPT 联网和插件功能,下周起可直接使用,无需排队!

夕小瑶科技说 分享 来源 | 新智元 OpenAI和谷歌&#xff0c;已经打得急红了眼&#xff0c;ChatGPT Plus用户&#xff0c;下周就可以体验联网和插件功能&#xff0c;无需再排队。鲨疯了&#xff0c;真的鲨疯了&#xff01; ChatGPT&#xff0c;下周开始联网&#xff0c;并开放插…

ChatGPT正式开放「上网能力」!

点击“开发者技术前线”&#xff0c;选择“星标” 让一部分开发者看到未来 来自&#xff1a;新智元 【导读】似乎就在昨天&#xff0c;OpenAI突然启用了上周才发布的「联网插件」。 刚刚&#xff0c;ChatGPT可以正式「上网」了&#xff01; ChatGPT联网小测试 既然能接入网络&a…

电脑网络连接怎么设置

不知道您是否想两台电脑同时使用上网呢&#xff1f;如果是的话&#xff0c;您需要去买一台路由器&#xff08;如何安装可以问卖家&#xff09;&#xff0c;这样就可以同时使用两台电脑上网了。 如果你只是想同一时间只用一台电脑上网的话&#xff1a; 拉好网线新建 “网络连接…

【OpenAI | ChatGPT“超进化”】打造AI生态

引言&#xff1a;特斯拉前AI主管Andrej Karpathy提出&#xff1a;GPT类模型是一种运行在文本上的新型计算机架构&#xff0c;它不仅可以与我们人类交谈&#xff0c;也可以与现有的软件基础设施“交谈”&#xff0c;API是第一步&#xff0c;插件是第二步。 写在前面&#xff1a;…

AI是超越还是桎梏?从ChatGPT到5G+AI,我们在聊什么?

从家常里短聊到科技创新&#xff0c;从人文故事探讨到物理科学&#xff0c;诞生2个月用户即破亿的ChatGPT正成为火爆全球的AI应用工具&#xff0c;其强大的能力超乎人们想象。这款几乎博学多识的聊天机器人能运用AI系统进行简洁的交流&#xff0c;完成各种指令信息的表达。面对…

Sam Altman 国会质询2.5万字全文:如果这项技术出错,它会出错得很严重

‍ 作者&#xff1a;城主 | 编辑&#xff1a;腾讯新闻 郝博阳 &#xff08;字号在右上菜单选调整字体&#xff09;划重点&#xff1a; 1. Sam Altman 认为与所有的技术革命一样&#xff0c;AI会对就业产生重大影响。但GPT-4是一个工具&#xff0c;而不是一种生物&#xff0c;它…

搜索引擎技术大战,始于昨日

作者 | 褚杏娟、核子可乐 IT 届很久没有像这几天这样因为某个技术热闹了&#xff0c;ChatGPT 则是那条将水搅浑的“鲶鱼”。 几乎在同一天&#xff0c;谷歌 CEO Sundar Pichai 先在官方博客上宣布推出谷歌下一代 AI 对话系统 Bard&#xff0c;以此应对 ChatGPT&#xff1b;百度…

AI时代的创业指南:四个全新趋势

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了人工智能中文站https://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT资源 前几天看到老牌基金NEA发表了一篇新文章&#xff1a;《Rewriting the Startup Playbook for the Age of AI》&#xff0c;主要内…

【黑科技】基于GPT开发的4款免费AI办公神器,实用又强悍!

今天给大家推荐4个非常实用且非常强悍的工具&#xff0c;基于GPT开发的AI工具 &#xff0c;每一款都能够大大提升我们的学习和工作效率 &#xff0c;希望你能看到并在收藏的同时点个赞或关注&#xff0c;万分感谢 。 Chat2doc 这是一个对学生党和打工人都特别有用的AI工具 &a…