Re第一题每个topic提供一个消费组还是总共一个消费组?
也就是说一个topic只能启一个spout,是吗?这样性能调整会受到限制,这个可是性能挑战赛呀,这种限制合理吗?
-------------------------
Re第一题每个topic提供一个消费组还是总共一个消费组?
噢,刚刚才开始使用RocketMQ,对它了解不深。我是用DefaultMQPullConsumer的,发现用同一个consumerGroup创建多个DefaultMQPullConsumer对象会报错:
Caused by: com.alibaba.rocketmq.client.exception.MQClientException: The consumer group[raceConsumerGroup] has been created before, specify another name please.
See github.com/alibaba/RocketMQ/issues/40 for further details.
请问使用Pull方式拉RocketMQ的消息有哪个类可以使用同一个consumerGroup同时创建多个对象的?我想创建多个对象,每一个分别对应一个Topic中的一个MessageQueue来用Pull方式拉消息。
-------------------------
Re第一题每个topic提供一个消费组还是总共一个消费组?
所以我才得出结论要不每个Topic只启一个spout用DefaultMQPullConsumer对象来拉消息,要不就用不同的consumerGroup创建多个DefaultMQPullConsumer对象同时来拉消息。
-------------------------
Re第一题每个topic提供一个消费组还是总共一个消费组?
不是不行,只是不如每个MessageQueue分别用一个DefaultMQPullConsumer对象Pull拉消息的性能好。这个我做过测试了。
-------------------------
Re第一题每个topic提供一个消费组还是总共一个消费组?
亲,一个Topic有多个MessageQueue(消息队列)的。
-------------------------
Re第一题每个topic提供一个消费组还是总共一个消费组?
hi,分析了一下RocketMQ的客户端代码发现“com.alibaba.rocketmq.client.exception.MQClientException: The consumer group[raceConsumerGroup] has been created before, specify another name please”异常的原因是:DefaultMQPullConsumerImpl在执行start方法时,向一个MQClientManager对象请求用consumerGroup对自己进行注册,并校验是否已经用相同的consumerGroup在MQClientManager对象中注册过了。如果已经注册过了就抛出上面的异常。而MQClientManager实例是个“单例”,在JVM内是全唯一的。所以在JVM内用同一个consumerGroup只能使用同一个DefaultMQPullConsumer对象,不能同时使用多个DefaultMQPullConsumer对象。但在不同的JVM内是可以用相同的consumerGroup分别创建并使用DefaultMQPullConsumerImpl对象的。所以在使用DefaultMQPullConsumerImpl时要用类变量进行引用,保证在整个JVM内共享同一个DefaultMQPullConsumerImpl实例如:static DefaultMQPullConsumer singleDefaultMQPullConsumer = new DefaultMQPullConsumer("raceConsumerGroup")
-------------------------
Re第一题每个topic提供一个消费组还是总共一个消费组?
RocketMQ的文档少得可怜,遇到问题要自己翻代码才能解决。Jstorm的文档也是少得可怜幸好可以借鉴Storm的。阿里要想自己的开源项目象Kafka、Storm(Heron)、Hbase那样广泛被外界使用文档恐怕还要多下工夫呀!