当前位置: 首页 > news >正文

rocketmq producer和consumer连接不同的集群,如何隔离

问题背景:

producer连接nameserver1,consumer连接nameserver2,

消费者指定了一个MessageQueueStrategy

服务启动的时候,发现消费者,消费不到topic,

发现的方式是在MessageQueueStrategy,debug发现message queue list,所属的topic并不是需要的topic

原因:

MQClientInstance里面的mQClientAPIImpl,它的nameserver的地址是nameserver1,

导致consumer去获取topic的info的时候,导致无法获取到数据。

原因是rocketmq producer和consumer共享一个MQClientInstance。

RocketMQ通过MQClientManager维护全局唯一的MQClientInstance(以clientId作为Key,默认clientId是10.8.0.178@34872这样的形式),同一进程内的Producer和Consumer会复用该实例的网络组件(包括RemotingClient)

计算clientId的方法:org.apache.rocketmq.client.ClientConfig#buildMQClientId

public String buildMQClientId() {StringBuilder sb = new StringBuilder();sb.append(this.getClientIP());sb.append("@");sb.append(this.getInstanceName());if (!UtilAll.isBlank(this.unitName)) {sb.append("@");sb.append(this.unitName);}return sb.toString();
}

解决方案:

给producer和consumer指定instanceName

producer.setInstanceName("Cluster1Instance");

consumer.setInstanceName("Cluster2Instance");

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

相关文章:

  • Windows10电脑开始菜单快速查找应用程序
  • Web网页端即时通讯源码/IM聊天源码RainbowChat-Web
  • RocketMQ总结
  • 导出支付宝账单步骤
  • Unity 接入抖音小游戏一
  • 【指针和函数求数组的相反数】2022-5-21
  • 聊一聊 - 如何写好README文档
  • MCP(模型上下文协议)——AI生态的“万能插座”
  • 改写爬虫, unsplash 图片爬虫 (网站改动了,重写爬虫)
  • Python基础之函数(1/3)
  • 使用ubuntu串口数据收和发不一致问题
  • LangServe 完整使用指南:部署LangChain应用到生产环境
  • Python队列与堆栈深度解析:从基础实现到高并发消息系统的实战之旅
  • 04 dnsmasq 的环境搭建
  • MySQL库操作
  • P25:LSTM实现糖尿病探索与预测
  • 【碎碎念】60秒! 卡牌游戏 60 Seconds! [特殊字符] 桌游版《求生60秒》
  • iOS安全和逆向系列教程 第19篇:ARM64汇编语言基础与逆向分析
  • 【Qt/数据结构 QMap是什么类型的数据结构?】
  • 工业PID算法在温控器的应用与参数说明
  • Windows 远程桌面添加 SSL 证书指南
  • 《B4A安卓开发实战秘籍》
  • 静态库和共享库(动态库)的编译链接
  • SHELL 编程正则表达式
  • NY230NY233美光固态闪存NY237NY246
  • 社区养老模式:现状、困境与破局之道
  • 准确--CentOS 7.9在线安装docker
  • 8.4.1简单选择排序
  • idea maven打包很慢,怎么提速-多线程
  • 中级统计师-经济学基础知识-第二章 企业生产理论