Kafka connect:停止任务,是否已提交偏移

时间:2018-06-21 16:59:22

标签: apache-kafka apache-kafka-connect

我在kafka connect SinkTask实现中具有以下代码。对于严重异常,我想在任务中调用stop()并停止该任务。

我需要知道是否转到stop()时,kafka connect是否会提交kafka主题分区中的偏移量吗?即,如果我处理异常,将其记录下来,基于该异常执行一些活动并调用stop(),是否因为put()中没有异常而提交了主题的偏移量(应用程序主题)?我假设因为从put()没有成功运行,或者未完成批次(基于最大轮询记录),所以偏移不应该完成,所以当我重试时,不会丢失任何记录。请让我知道是否有人提出补偿建议?

代码:

public class ExampleSinkTask extends SinkTask {
    @Override
    public void start(Map<String, String> map) {
    ....

    }

    @Override
    private void doSomeCriticalOperation()  {
        // call stop if critical operation fails. 

        ...

        // Exception handled, close the task (allow user interference in such cases) 
        stop();
    }

    @Override
    public void put(Collection<SinkRecord> collection)  {
        ..
        doSomeCriticalOperation();
        ..

    }

    @Override
    public void stop() {
        log.info("*** Stopping Kafka task completely ***");
        System.exit(0);
    }
}

0 个答案:

没有答案