如何保证消费者端的消息排序?
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
则具有相同密钥的消息将生成到同一分区,并且保证消费者按顺序消费它们。
假设生产者以特定顺序(顺序非常重要)为 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
则具有相同密钥的消息将生成到同一分区,并且保证消费者按顺序消费它们。