方式 | 说明 |
全局有序 | 创建仅 1 分区的 Topic。如果 Topic 仅有一个分区,服务端收到消息的顺序与生产者客户端发送的消息顺序严格一致。 从单个 Topic 的角度来看,1 分区的 Topic 在消息的写入和读取中都无法发挥集群完整集群性能,只有多个 1 分区的 Topic 同时使用时,才有可能最大限度的发挥集群的性能。 |
分区有序 | Kafka 分区中消息天然有序,您也可以通过将需要保证顺序的消息写入到同一分区的方式来实现消息的有序性。该方式适用于不需要所有消息都保证顺序的场景。
|
配置 | 说明 |
acks | 消息写入成功严格性配置。 支持设置为 0、1、-1 或 all。其中 -1 和 all 所代表的语义相同。
|
max.in.flight.requests.per.connection | 同时发送的最大请求个数。 可配置 1 个或多个。若配置大于 1 时,考虑到消息发送失败重试的场景,消息发送在同一个生产者中也无法保证消息有序。 |
retries | 消息发送失败后的重试次数。 可配置 0 次、1 次或多次。Apache Java 客户端默认无限次重试。 |
enable.idempotence | 消息幂等性配置。 若配置开启,则在生产端会保证消息的幂等性。 |
配置 | 说明 |
enable.auto.commit | 是否开启自动提交。 建议关闭自动提交,保证在消息处理成功后再进行消费提交。 |
auto.offset.reset | 消费组无有效消费记录时将使用此策略进行消费位点初始化。 默认为 latest。支持设置为:
|