Java 从卡夫卡进行投票时,记录的顺序是否得到保证?
我使用ApacheKafka客户端轮询来自Kafka的记录 让我们假设我做了如下事情:Java 从卡夫卡进行投票时,记录的顺序是否得到保证?,java,apache-kafka,Java,Apache Kafka,我使用ApacheKafka客户端轮询来自Kafka的记录 让我们假设我做了如下事情: org.apache.kafka.clients.consumer.Consumer consumer = ... ... ConsumerRecords<String, String> consumerRecords = consumer.poll(...); List<ConsumerRecord<String, String>> records = consumerR
org.apache.kafka.clients.consumer.Consumer consumer = ...
...
ConsumerRecords<String, String> consumerRecords = consumer.poll(...);
List<ConsumerRecord<String, String>> records = consumerRecords.records(partition);
org.apache.kafka.clients.consumer.consumer=。。。
...
ConsumerRecords ConsumerRecords=consumer.poll(…);
列表记录=消费者记录。记录(分区);
我的问题是:记录是否按自然顺序返回?更具体地说,它们是否按记录
列表中的偏移量
排序
我在JavaDoc中找不到有关此属性的任何特定内容。轮询意味着记录将异步返回。您不保证有任何订单,但处理订单的顺序除外
如果需要对列表进行排序
,则可以使用任何可比较的
函数,以便在流完成后对其进行排序。查看源代码,似乎可以保留分区内记录的顺序。记录存储在数组列表中,并使用偏移量获取
另请参见中的答案,这是我对异步、基于事件的处理以及向流中添加事件的理解。什么需要加强?Kafka是一种事件流总线,不同的应用程序可以连接到该总线进行消息传递。无法保证有人连接到消息总线。您无法知道它们何时将发出事件。你不知道他们都在做什么,也不知道他们的过程需要多长时间。我建议你改进你的问题。如果只有一个分区,投票顺序有保证吗?根据上面答案中的链接,是的。在我看来你是对的,因为我不能复制一个不正确的顺序