RocketMQ使用docker容器启动服务,结果多个消费者的clientid一样,导致rocketmq的rebalance失效怎么办?

提问者:帅平 问题分类:微服务
RocketMQ使用docker容器启动服务,结果多个消费者的clientid一样,导致rocketmq的rebalance失效怎么办?
1 个回答
安若兮
安若兮
不管是 Push 还是 Pull 模式,消息消费的控制权在 Consumer 上,所以 Consumer 的负载均衡实现是在 Consumer 的 Client 端上,所以一定要注意下,在docker上启动的rocketmq消费者默认clientid是根据网卡的规则来生成的,由于docker使用cgroup进行资源隔离,会导致docker内部的网卡ip出现相同的情况,进而导致生成的clientid是一样的。这里我们可以手动的设置下相关的clientid,例如:
@PostConstruct
public void init() {
  System.setProperty("rocketmq.client.name", String.valueOf(UtilAll.getPid()) + "@" + System.currentTimeMillis());
}
发布于:9个月前 (07-19) IP属地:四川省
我来回答