qunarcorp / qmq

QMQ是去哪儿网内部广泛使用的消息中间件,自2012年诞生以来在去哪儿网所有业务场景中广泛的应用,包括跟交易息息相关的订单场景; 也包括报价搜索等高吞吐量场景。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

请问不同的brokergroup之间会进行同步吗?

majiabaomajiabao opened this issue · comments

问题描述
请问不同的brokergroup之间会进行同步吗?

commented

不同broker group之间是不会同步的

多谢,那再请问一下,客户端在发送消息会去metaServer获取brokerGroup,然后取一个去发送,那客户端在pull消息时,也是从metaServer拿了一个brokerGroup,这两个brokerGroup如果不一样,那消息是不是就拉取不到呢?

commented

这种情况是会拉取不到消息,生产和消费拿到的broker group正常情况下要保持一致。

那这个生产和消费的绑定,是在哪里进行的呢?能帮忙给一下相关的类名,我没找到这块逻辑

commented

这是路由分配相关的功能,可以在metaserver里找到,分配相关的逻辑可以看下面的类。
qunar.tc.qmq.meta.route.impl.DefaultSubjectRouter#route

好的,多谢

看了一下qunar.tc.qmq.meta.route.impl.DefaultSubjectRouter#route,有个地方不太理解,这个方法的返回类型是集合List,producer和consumer都可以拿到一样的集合,但都是选择其中一个连接,那怎么保证选择的是一样的呢?麻烦再帮忙看一下

commented

为了保证服务的可用性,每个主题都必须至少分配2个broker group,这样才能避免单点故障。
对于producer,消息会平均发送到多组broker group上。
对于consumer,它也会根据负载均衡规则轮流从多组broker group上拉取消息。
所以正常情况下保持列表一致就没有问题了。

了解了,多谢