BLue

0 声望

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

个人动态
  • 半兽人 回复 BLue有关kafka多线程启动多个Consumer报错的问题 中 :

    不用写新线程去拉取消息呀。
    poll从这个里面才需要分发消息。

    6月前
  • BLue 回复 半兽人有关kafka多线程启动多个Consumer报错的问题 中 :
    new Thread(new Runnable() {
    @Override
    public void run() {
    new ConsumerForward(consumerFactory.getConsumer(topicName)).poll(topicName, obj, transObj);
    }
    }, topicName + "-consumerThread").start();
    

    博主,我下载的您写的客户端中,是不是启动一个新的线程去拉去数据?我在运行的时候也遇到这样的错误。

    6月前
  • BLue 回复 半兽人kafka消费有重复数据 中 :

    谢谢您的回答😂,我从网上找到的,也不知道是不是解决方式,下面是原文:
    其中成员加入或成员离组是最常见的触发重平衡的情况。新成员加入这个场景必然发生重平衡,没办法优化(针对初始化多个消费者的情况有其他优化,即延迟进行重平衡),但消费者崩溃离组却可以优化。因为一个消费者崩溃离组通常不会影响到其他{partition - consumer}的分配情况。

    因此在 kafka 2.3~2.4 推出一项优化,即此次介绍的Static Membership功能和一个consumer端的配置参数 group.instance.id。一旦配置了该参数,成员将自动成为静态成员,否则的话和以前一样依然被视为是动态成员。

    静态成员的好处在于,其静态成员ID值是不变的,因此之前分配给该成员的所有分区也是不变的。即假设一个成员挂掉,在没有超时前静态成员重启回来是不会触发 Rebalance 的(超时时间为session.timeout.ms,默认10 sec)。在静态成员挂掉这段时间,broker会一直为该消费者保存状态(offset),直到超时或静态成员重新连接。
    另外您说的第四条不是很明白,我的场景类似:一个群组中有三个消费者,我们设置了消费者停止的条件,其中有一个消费者满足了条件,停止了,但是另外两个并没满足,还在运行。这时就会触发Rebalance,导致另外两个消息的重复消费。

    再次感谢您的回答,学到了很多,respect
    👍👍👍

    6月前
  • 半兽人 回复 BLuekafka消费有重复数据 中 :

    你都没认真看我的回答,只要触发Rebalance,你的消息要么丢,要么重复消费。跟算法有关系吗?

    6月前
  • 6月前
  • 关注了用户 半兽人 · 1年前