当前位置: 首页 > 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");

相关文章:

  • 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算法在温控器的应用与参数说明
  • 哪里有做php网站免费教程/网络口碑营销案例分析
  • 深圳行业网站建设/品牌推广的意义
  • app软件开发公司选用友yonmaker/快速排名seo
  • 佛山做推广网站的/java培训机构十强
  • 做网站给源码吗/最常用的搜索引擎有哪些
  • 营销方案网站/sem是什么的缩写