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

Kafka-消息排序保证

邢乐
2023-03-14

我遇到了两个关于订购的短语,

  1. 生产者发送到特定主题分区的消息将按发送顺序追加。也就是说,如果记录M1与记录M2由同一生产者发送,并且M1首先发送,则M1的偏移量将低于M2并出现在日志中的较早位置。

另一个

问题是,如果存在如#2所述的失败发送,那么该顺序是否仍会保留到特定分区?如果一条消息存在潜在问题,将删除每个分区的所有以下消息“以保留顺序”,或者将发送“正确”的消息,并将失败的消息通知应用程序?

共有1个答案

柴深
2023-03-14

"如果有像上述#2这样的失败发送,订单是否仍会保留到特定分区?"

正如您复制的文档部分所述,存在更改订单的风险。

想象一下,您有一个主题,例如一个分区。您可以将重试次数设置为100,并将最大值设置为in。航班请求。每连接到大于1的5。请注意,只有将确认设置为1或“全部”时,重试才有意义。

如果您计划按K1、K2、K3、K4、K5的顺序生成以下消息,并且您的生产者需要一些时间

  • 实际创建批次和

您最多可以有5个并行请求(基于max.in.flight.request.per.connection的设置)。现在,生成“K3”有一些问题,它进入重试循环,可以生成消息K4和K5,因为请求已经在飞行中。

你的主题将以以下顺序结束:K1,K2,K4,K5,K3。

如果在Kafka生产者中启用了幂等性,则在使用幂等Kafka生产者时,仍将保证排序,如排序保证中所述

 类似资料:
  • Kafka 接收器连接器如何在从分区提取消息时确保消息排序。我有多个分区,并且在发布每个分区带有哈希键的消息时确保了消息排序。现在,当多个接收器任务(及其工作线程)从多个 JVM 扩展,负责从同一分区获取消息并通过 HTTP 通知目标系统时,我如何保证目标系统将按顺序接收消息。

  • 阅读这篇关于主题分区中消息排序的文章:https://blog.softwaremill.com/does-kafka-really-guarantee-the-order-of-messages-3ca849fd19d2 允许在不设置最大值的情况下重试。航班请求。每连接到1可能会更改记录的顺序,因为如果将两个批发送到单个分区,第一个失败并重试,但第二个成功,则第二个批中的记录可能会首先出现。 根

  • 在消费者重新平衡期间如何确保消息排序。假设最初我们有四个分区:p1、p2、p3、p4和两个消费者c1和c2(在同一组中)。因此每个消费者得到两个分区,例如c1 : p1,p2和c2 : p3,p4。 现在添加了新的消费者,比如c3和c4,重新平衡发生,这样每个消费者都有一个分区,比如c1: p1、c2: p2、c3: p3、c4: p4。 在此期间,消费者c1可能正在处理来自分区p2的消息(在重新

  • 我的Kafka publisher发送以下格式的字符串消息: 例如: 另外,我们为每个消息添加一些消息键,将它们发送到相应的分区。 我如何在1分钟窗口中重新排序消息并将它们发送到另一个主题?

  • 本文向大家介绍kafka如何保证不丢失消息?相关面试题,主要包含被问及kafka如何保证不丢失消息?时的应答技巧和注意事项,需要的朋友参考一下 复制因子:创建topic的时候指定复制因子大于1时,一个分区被分配到一个broker上,同时会在其他broker上维护一个分区副本; isr列表:分区及其副本分别为leader和follower,leader对外提供读写服务,follower会向leade

  • 我有一个Apache Kafka2.6制作人,它写的主题-A(TA)。我还有一个Kafka streams应用程序,它使用TA并写入topic-B(TB)。在streams应用程序中,我有一个自定义的时间戳提取器,它从消息负载中提取时间戳。 对于我的一个失败处理测试用例,我在应用程序运行时关闭了Kafka集群。 当生产者应用程序试图向TA写入消息时,它无法写入,因为集群已关闭,因此(我假设)缓冲了