当前位置: 首页 > 知识库问答 >
问题:

apache kafka消费者退避策略

龚志
2023-03-14

当对骆驼使用Kafka组件时,从Kafka消费时有两种方法可以重试:

    null

org.apache.kafka.clients.Consumer.internals.AbstractCoordinator[Consumer ClientID=Consumer-1,GroupID=2862121D-DDC9-4111-A96A-41BA376C0143]此成员将离开组,因为使用者轮询超时已过期。这意味着对poll()的后续调用之间的时间长于配置的max.poll.interval.ms,这通常意味着poll循环花费了太多时间处理消息。您可以通过增加max.poll.interval.ms或通过减少poll()中返回的批的最大大小和max.poll.records来解决这一问题。

  • 每次重试时使用参数BreakOnFirstError轮询。偏移量不会更新,我们会继续从代理轮询相同的消息。问题是我找不到定义退避策略的方法,并且重试的次数太多。

您知道如何为第二种方法定义退避策略吗?

共有1个答案

万高洁
2023-03-14

我不熟悉Apache Camel,但如果您能够修改消费者参数和轮询循环,那么第二种方法是正确的,它是重试的Kafka方法-不提交偏移量,因此下一次轮询循环迭代将再次使用该消息。

进一步的策略取决于在失败处理的情况下您到底需要什么:

>

  • 您希望重试最终成功吗?然后,为了避免滥发相同的消息,您可以使用max.poll.interval.ms配置参数调整使用者轮询Kafka消息的时间间隔。此处提供更多详细信息

    您想重试一定的次数,然后继续下一条消息吗?在这种情况下,您需要在轮询循环中手动实现重试计数器。一旦达到一定的重试次数-您只需进一步移动consumer:

    final TopicPartition TopicPartition=new TopicPartition(主题,分区);consumer.seek(topicPartition,consumer.position(topicPartition)+1);

  •  类似资料:
    • 本文向大家介绍Kafka 消费者负载均衡策略相关面试题,主要包含被问及Kafka 消费者负载均衡策略时的应答技巧和注意事项,需要的朋友参考一下 一个消费者组中的一个分片对应一个消费者成员,他能保证每个消费者成员都能访问,如 果组中成员太多会有空闲的成员

    • 我们有一个应用程序,它使用来自Kafka主题(3个分区)的消息,丰富数据,并将记录保存在DB(Spring JPA)中,然后将消息发布到另一个Kafka主题(在同一个代理上),所有这些都通过使用Camel 2.4.1和Spring Boot 2.1.7进行编排。释放 我们想为 kafka 消费者-生产者组合实现“exactly-once”语义。 消费者设置: 生产者设置: 豆接线: 骆驼路线: 但

    • 是否有一种方法以编程方式访问和打印使用者滞后偏移,或者说使用者读取的最后一条记录的偏移与某个生产者写入该使用者分区的最后一条记录的偏移之间的位置差。 要知道我的最终目标是将这个值发送到prometheus进行监视,我应该在上面添加哪些语句来得到滞后偏移值?

    • 我花了几个小时想弄清楚发生了什么,但没能找到解决办法。 这是我在一台机器上的设置: 1名zookeeper跑步 我正在使用kafka控制台生成器插入消息。如果我检查复制偏移量(

    • Flink kafka消费者有两种类型的消费者,例如: 这两个消费者层次结构扩展了相同的类。我想知道维护编号类背后的设计决策是什么?我们什么时候应该使用其中一种? 我注意到带有数字后缀的类有更多的特性(例如ratelimiting)。 https://github.com/apache/flink/blob/master/flink-connectors/flink-connector-kafka

    • 我刚接触Kafka,很少阅读教程。我无法理解使用者和分区之间的关系。 请回答我下面的问题。 > 消费者是否由ZK分配到单个分区,如果是,如果生产者将消息发送到不同的分区,那么其他分区的消费者将如何使用该消息? 我有一个主题,它有3个分区。我发布消息,它会转到P0。我有5个消费者(不同的消费者群体)。所有消费者都会阅读P0的信息吗?若我增加了许多消费者,他们会从相同的P0中阅读信息吗?如果所有消费者