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

Kafka消费者投票行为与秩序

邴兴为
2023-03-14

假设我的使用者从一个代理轮询,该代理有多个主题,每个主题有多个分区。我在同一个消费群体中总共有5个消费者。如果我的每个消费者都进行投票,将返回的数据顺序是什么?

topicD-分区5

我的问题是,在这个单一的1轮询中,在按顺序移动到下一个主题/分区之前,我会收到来自该主题/分区的所有可用消息吗?意思例如:

在一次投票循环中,我收到了这个...

或者在那个单一的1轮询循环中,有可能接收到这个消息顺序?将拆分相同的分区和主题(topicA分区1、Topica-Partition 0和Topicc-Partitions 3)

行为B

topicA-分区1-从偏移量1000...1499接收到消息

我想知道这个行为,如果它保证和将是一致的行为A或B或可以配置。我已经搜索了这个,但在医生或以前问过的问题中找不到它。我自己也测试过它,它似乎总是行为A,但我想确认它。感谢和感激任何事先的帮助。

共有1个答案

海翼
2023-03-14

不幸的是,在多个分区中,消息的顺序没有得到保留。来自Apache文档https://kafka.Apache.org/082/Documentation/:

Kafka只提供分区内消息的总顺序,而不是主题中不同分区之间的顺序。对于大多数应用程序来说,每分区排序与按键划分数据的能力相结合就足够了。但是,如果您需要消息的总顺序,这可以通过只有一个分区的主题来实现,尽管这意味着只有一个使用者进程。

 类似资料:
  • 我想在特定时间停止对特定主题的轮询。 Spring防尘套2.X Springkafka 2.5.5 Kafka版本2.5.1 比如即使有消息进来测试题目分区,消息也是从00到01堆在分区里,没有消耗。 01点之后,我想再次使用有关TEST主题的消息。 如何暂停和恢复?

  • 我在使用者组中轮询来自 Kafka 的消息时遇到问题。我的使用者对象分配给给定的分区 之后,消费者向该分区分配: 之后,我可以计算分区内的消息 和 ..... 在我的主题中有超过30000条消息。问题是我只收到一条消息。 具有< code > max _ poll _ records = 200 < code > AUTO _ OFFSET _ RESET 的消费者配置是最早的 这是我的函数,我正

  • Kafka 消费者在每个投票中轮询 500 条消息。我们禁用了, 假设我们已成功处理 100 条消息,偏移量也为 100 现在在第101条消息中,我们遇到了一个错误,我们没有提交偏移量 但是因为我们已经有了500条消息,所以我们处理了第102条消息,我们成功地处理了它,并且我们还提交了第102条消息的偏移量。 雀: 第 101 条消息会发生什么。 如何克服这个问题。

  • 我试图在我的spring boot项目中使用spring kafka来阅读来自我的kafka的消息。我正在使用@KafkaListener,但问题是我的消费者总是在运行。只要我从控制台生成一条消息,它就会在我的应用程序中弹出。我想定期投票。我怎样才能做到这一点? } 这是我的消费者配置:

  • 我的问题是,我无法足够快地轮询我的队列,以保持我的队列为空或接近空。我最初的想法是,我可以让使用者以x/s的速率通过Camel从SQS接收消息。从那里,我可以简单地创建更多的消费者,以达到我需要的消息处理速度。 我的消费者: 如图所示,我设置了和以提高消息的速率,但是我无法生成具有相同endpoint的多个使用者。 我在文档中读到,我相信SQSendpoint也是如此,因为生成多个使用者将只给我一

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