• kafka consumer 指定 offset,进行消息回溯


    kafka 消息回溯

    指定 offset 的 api

    KafkaConsumer#seek
    KafkaConsumer#seekToBeginning
    KafkaConsumer#seekToEnd

    对应

    assignedState(tp).seek(offset);
    
    assignedState(partition).reset(offsetResetStrategy);
    
    assignedState(partition).reset(offsetResetStrategy);

    首先检查当前消费者是否分配到分区,然后发送请求

    // org.apache.kafka.clients.consumer.internals.SubscriptionState#assignedState    
    private TopicPartitionState assignedState(TopicPartition tp) {
        TopicPartitionState state = this.assignment.stateValue(tp);
        if (state == null)
            throw new IllegalStateException("No current assignment for partition " + tp);
        return state;
    }

    KafkaConsumer#seek 和 KafkaConsumer#offsetsForTimes 和结合使用

    所以,kafka 的消息回溯,需要给消费者发送指令,让消费者调用 seek 或 seekToBeginning 或 seekToEnd。

  • 相关阅读:
    1175_UPDATE报错[转]
    python&sql
    MySQL安装
    python[1]
    一道题理解层次分析法【转】
    神经网络编程入门
    监督学习和无监督学习
    ML-3Normal equation
    ML_note1
    CTF之隐写总结
  • 原文地址:https://www.cnblogs.com/allenwas3/p/9676188.html
Copyright © 2020-2023  润新知