如何保证消费者端的消息排序?

How can I guarantee message ordering from the consumer side?

假设生产者以特定顺序(顺序非常重要)为 3 个不同的消费者发送 3 个事件,所有这些事件都指向同一个主题,并且所有消费者都订阅了该主题。

让我们假设所有的消费者都宕机了,他们都将一起重新启动。

我如何确保这些消费者会维护事件的顺序?

您可以在命令中使用 --from-beginning 标志,例如:$ bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092

检查 1.3 Quick Start,找到 STEP 5: READ THE EVENTS

此外,您还可以在上面提供的 link 中获得一些有用的信息。

  • 如果你的生产数据不属于一个分区,那么消费 顺序无法保证。
  • 因此,如果您的主题有多个分区,那么您需要考虑生产者的分区程序。如果是 hash-based 则具有相同密钥的消息将生成到同一分区,并且保证消费者按顺序消费它们。