[宇通]马鹏飞

0 声望

这家伙太懒,什么都没留下

个人动态
  • 剑枫寒 回复 [宇通]马鹏飞基于librdkafka的c++消费者封装 中 :

    嗯嗯 多谢回答

    第一: kafka rebalance触发条件:
    1. 消费组成员变更: consumer加入或者退出
    2. topic创建,组订阅关系变更
    3. partition分区改变(修改分区或者broker变更)
    第二:kafka线程问题:
    1. 心跳线程:与broker保持心跳
    2. 消费线程:从leader拉消息
    3. 生产者线程:在创建Producer实例时会创建并启动Sender线程实例。只有Sender线程开始运行时(即生产者本地队列有消息发到broker)才会创建与broker的TCP连接
    4. 至于上图中的两个broker-1的线程: 我认为是专门用来拉取集群metadata的线程
    5年前
  • [宇通]马鹏飞 回复 剑枫寒基于librdkafka的c++消费者封装 中 :

    1、本例中使用的是高级消费者api : KafkaConsumer。源码rdkafkacpp.h里面说调用consume消费消息时,会自动调用reblance事件回调,为什么我设置reblance消息回调没有被调用到:

    • 因为你用的HighLevelApi,所以reblance只有在被消费的topic的多个partition进行重新分配时才会调用,比如消费第1个partition的消息者断开后才会触发这个回调。

    2、线程用途不太清楚,我觉得主要有两种:

    1. 心跳线程:与broker之间的心跳消息、断链、重新均衡的通知;
    2. 消费线程:取决于你的消费集群还有你的topic分区数,一个分区同时只能被一个消费者线程消费,所以如果分区设置为32个且消费程序只有1个,就会有32个线程;

    其他就不了解了。。

    5年前