作者回复: 感谢纠正:)
可以任意指定创建
作者回复: 如果使用assign,则表明该consumer是独立consumer(standalone consumer),它不属于任何消费者组。独立consumer可以订阅任何分区,彼此之间也没有关系,即两个独立consumer可以订阅并消费相同的分区
作者回复: 网络断了,心跳中断,consumer被踢出组,也属于第一种情况
作者回复: 专栏后面有专门的内容:)
作者回复: 嗯嗯,不就是每个consumer分配两个吗?
作者回复: 1. 不会。每个订阅者分配一部分分区消费
2. 没有什么规定要求什么场景下需要订阅多个主题。事实上,对于默认的分区策略,一个组订阅多个主题的做法会导致分配的极不均匀,但我们依然还是能够找出一些场景,使得这么做是有意义的。比如消费者组订阅多组传感器的数据,我们不确定未来新增传感器的主题名到底是什么,但可以约定所有传感器的主题名以sensor开头,那么此时让group订阅以sensor开头的所有主题就能动态地检测后续新增的主题。这个场景是不是有意义些?
作者回复: 嗯,会的。减少consumer个数也有缩短rebalance。
作者回复: 非常可能存在
作者回复: 总结得非常全面了:)
作者回复: 专栏结束了把你的分享笔记share出来吧:)
作者回复: 如果它们都属于同一个消费者组,那么不能。消费者组订阅的分区只能被组内一个consumer实例消费。
作者回复: 不要求一样。分配取决于你用什么策略,默认策略你基本上可以认为是平均分配。
作者回复: 不会的。分配的原则还是要考虑每个consumer的订阅情况。不可能把你没订阅的分区分给你
作者回复: 可以的。虽然在实际使用中可能更多的还是同一个group的多个实例订阅相同的topic。
作者回复: 如果你没有实现ConsumerRebalanceListener接口中的方法显式从MySQL中恢复offset,那么rebalance回来后会从Broker中读取Kafka这边保存的已知的最新位移,但很可能不是你MySQL中保存的位移,因此此时调用commitSync没有什么效果。
作者回复: kafka增加了分区手动迁移的话也要迁移数据的
作者回复: 1. 如果你的client端机器非常强劲,只启动一个consumer实例单线程消费未免有些浪费,你可以以启动多个线程的方式来充分利用资源。
2. 消息被删除。具体流程因不同框架而定
3. 1个consumer必须订阅所有分区,这是不必要的