假设我有两个生产者(ProducerA 和 ProducerB)使用单个分区写入同一主题。每个生产者都在连续编写自己独特的事件。所以如果 ProducerA 触发 3 个事件,然后 ProducerB 触发 3 个事件,我的理解是 Kafka 不能保证生产者事件的顺序是这样的:
由于确认,重试等。
然而,个别制作人的活动仍会正常吗?例如:
这当然是我正在做的事情的简化版本,但我只想保证,如果我正在阅读特定生产者事件的主题,那么即使其他生产者的事件将它们交错,这些事件也将是有序的。
小智 2
生产者的消息将按接收顺序存储在每个分区中。如果您可以保证生产者上的消息顺序,那么消费者可以在轮询时假设顺序。重试逻辑、多个KafkaProducer实例和其他异步实现细节可能会使有序消息的生成变得复杂。通常,可以通过在消息的键或值中包含唯一的事件标识符、生产者的标识符以及足够粒度的时间戳来缓解这些问题。依赖异步框架中的排序通常是最好的情况流程,但是当事情发生混乱时应该有某种方法来补偿。
| 归档时间: |
|
| 查看次数: |
7141 次 |
| 最近记录: |