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

交易Kafka生产者-加倍的消费者滞后

邓德惠
2023-03-14

我们有一个基于spring boot的事务性Kafka制作人!使用的版本如下

  • spring-boot-starter-父-2.3.0。释放
  • spring-kafka-2.5.0。释放

我们的kafka(集群)版本是2.1. x!

作为生产者,我们启用了幂等性,定义了事务id前缀,并在事务中执行html" target="_blank">kafka模板调用。我们还有一个将隔离级别设置为只读的使用者!

现在我们遇到了一个行为,不知道如何推断,

  • 生产者发送n个事件(10)
  • 消费者(未运行)延迟显示为n事件的两倍(20,而生产者仅发送10!)
  • 消费者(运行)只消耗n个事件(10)-与生产的一样多

可以想见,没有什么原因,但随后又想检查专家的意见,试图从官方来源找出答案,但到目前为止还不走运!希望这不是太笼统。说到滞后,这是意料之中的吗?延迟是制作人发送的原始条目的两倍(可能是因为制作人发送的每个事件都有一个条目具有事务信息)?

共有1个答案

杭令
2023-03-14

如果您注意到所使用的消息的偏移量,它可能是可选的。0,2,4,6... 这是因为每笔交易后都会记录一条“提交标记”消息。此消息占用了主题的偏移量。所以1,3,5。。。将被标记器消耗
由于耗电元件滞后观察到上一次消耗的偏移量和当前偏移量之间的偏移量差,因此滞后量是原来的两倍。

 类似资料:
  • 我正在处理一个kafka用例,在这个用例中,我需要在生产者和消费者端具有事务性语义...我可以使用kafka transaction API 0.11将事务性消息发布到kafka集群,但在消费者端,我面临着一个问题...我在属性文件中设置了但我不能使用它...我可以看到消息被使用但这不是希望的... 生产者代码 ProducerTX.Properties 消费者 感谢你的帮助..谢谢

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

  • Kafka为每条消息生成偏移量。假设,我正在生成消息5,偏移量将从1到5。 但是,在事务生产者中,比如说,我产生了5条消息并提交,然后是5条消息但中止,然后是5条消息提交。 > 那么,最后提交的5条消息的偏移量是6到10还是11到15? 如果我不放弃或不promise呢。这些信息还会被发布吗? Kafka是如何忽略未promise的补偿的?因此,kafka提交日志是基于偏移量的。它是否使用事务使用

  • 我正在建立一个新的Kafka集群,为了测试目的,我创建了一个有1个分区和3个副本的主题。 有什么想法哪种配置或其他东西可以帮助我消费更多的数据吗?? 提前致谢

  • 我目前正在开发Kafka模块,我正在使用Kafka通信的抽象。我能够集成生产者 Spring Boot测试类 监听器类 我的问题是:在测试类中,我断言分区、有效负载等是从BlockingQueue轮询的,然而,我的问题是如何验证用KafkaListener注释的类中的业务逻辑是否得到正确执行,并根据错误处理和其他业务场景将消息路由到不同的主题。在一些示例中,我看到了CountDownLatch的断

  • 向Kafka推送100,000条消息 在使用者使用所有100,000条消息之前,使用Ctrl-C关闭zookeeper和kafka服务(这是通过在consumer方法中使用来模拟的)。 发现 在zookeeper和kafka服务被关闭后,消费者继续在控制台上写消息。 问题 我如何使消费者从上次消费的消息的索引+1继续。 向Kafka推送100,000条消息 在使用者使用所有100,000条消息之前