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

在分区中对 Kafka 消息进行排序,同时生产者重试

裘兴思
2023-03-14

根据生产者配置,有:重试和max.in.flight.requests.per.connection.假设重试

在主题的一个分区中,消息是否可以无序到达(例如,如果第一条消息有重试次数,但是第二条消息在第一次尝试时被传递给代理)?

或者乱序只发生在主题的几个分区之间,但在分区内顺序被保留?

共有2个答案

公孙霖
2023-03-14

根据最新的更新留档,您最多可以有5个max.in.flight.requests.per.connection,Kafka可以为此维护订单。

云慈
2023-03-14

如果将重试次数设置为大于 0,并将最大 .in.flight.requests.per.连接设置为 1 以上,那么 yes 消息可能会无序到达代理,即使它们位于同一分区。

例如,如果一条消息被正确地添加到Kafka日志中,而在将响应发送回客户端时发生了错误,那么您也可以拥有副本。

从 Kafka 0.11 开始,您可以使用幂等生产者来解决这两个问题。请参阅 http://kafka.apache.org/documentation/#semantics

 类似资料:
  • 我正在使用Spring Boot中的。Java 8 我的主要目的是,消费者不应重复使用信息。 1)调用表获取100行并将其发送到kafka 2) 假设我处理了70行(我得到了成功确认),然后Kafka宕机了(Kafka在RETRY机制计时内无法恢复) 因此,当我重新启动Spring启动应用程序时,我如何确保不再发送这70条消息。 一种选择是我可以在数据库表消息 中使用标志。 还有其他有效的方法吗?

  • 我正在创建一个系统,其中前端服务将消息推送到Kafka请求主题,并为一些下游后端消费者(实际上是一个最终推送回Kafka的复杂系统)监听另一个响应主题,以处理请求消息并最终推进到“回应”话题。 我试图找出最优雅的方法来确保消费者监听适当的分区并收到响应,并且后端推送到前端消费者正在监听的分区。我们总是需要确保响应到达产生初始消息的同一个消费者。 到目前为止,我有两种解决方案,但都不是特别令人满意的

  • 我将sping-boot(2.1.6.RELEASE)与sping-kafka(2.2.7.RELEASE)一起使用,并且我使用KafkaTemplate向我的kafka集群发送消息。但是有时(通常是当我重新启动kafka代理或进行重新平衡时),我在发送消息时会看到这样的错误: 由于默认的Kafka生产者配置,我期望发送失败重试,但他们没有。默认Kafka生成器配置: 我的配置是这样的: 我发出这

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

  • 我有两个Kafka制作人向具有多个分区的同一主题发送消息。 正如预期的那样,来自同一生产者PR1的具有相同密钥K1的消息总是转到同一分区PA1。 问题是来自另一个生产者PR2的具有相同密钥K1的消息转到另一个分区PA2,而我希望它们也转到PA1。 Kafka不是在制片人之间保留分区分配吗? 是否与两个生产者使用不同的Kafka客户端库有关? 如果我设置两个制作人使用相同的id,会有帮助吗?