Производитель Kafka отправляет сообщение об истечении срока действия дуэта на 30003 мс с момента последнего добавления

Я использую Kafka 0.10.1.1 и пишу производителя тестов, но получаю ошибку в обратном вызове producer.send onCompletion:

        producer.send(record, new Callback() {
        @Override
        public void onCompletion(RecordMetadata metadata, Exception e) {
            if (e != null){
                System.out.println(e.getMessage());
            }
        }
    });

Производитель с конфигурацией: timeout.ms=30000, linger.ms=5, batch.size=1000

Получил следующее сообщение об ошибке:

Срок действия 1 записи (записей) для testtopic-2 истекает из-за того, что с момента последнего добавления прошло 30004 мс.

Но это сообщение об ошибке просто появлялось иногда. Иногда производитель может хорошо работать.


person PemanZ    schedule 13.02.2017    source источник
comment
Просто увеличьте значение таймаута... с 30000 до 60000 (например)   -  person Matthias J. Sax    schedule 13.02.2017
comment
Я попытался установить timout.ms=60000, все еще есть такое сообщение об ошибке, даже если установить время ожидания = 180000, сообщение об ошибке все еще есть.   -  person PemanZ    schedule 13.02.2017
comment
Попробуйте увеличить размер партии.   -  person amethystic    schedule 13.02.2017
comment
на самом деле, я просто отправляю 1 сообщение для тестирования, появляется ошибка с истекающим сроком действия. Есть ли что-нибудь, связанное с batch.size? И кажется, что сообщение об ошибке теперь будет появляться для каждого сообщения....   -  person PemanZ    schedule 13.02.2017
comment
Похоже, у вас проблемы с подключением к вашему брокеру. Сообщение об ошибке, которое вы видите, появляется, когда пакет заполнен (т. е. linger.ms или размер пакета достигнут), и производитель не может обновить метаданные, необходимые для отправки запроса, в течение времени ожидания, которое вы видите в сообщении об ошибке.   -  person Sönke Liebau    schedule 13.02.2017
comment
да, это вызвано автоматически созданной темой, если я создаю тему из оболочки, она работает хорошо.   -  person PemanZ    schedule 13.02.2017
comment
Не рекомендуется включать автоматическое создание темы. Всегда лучше делать это вручную, потому что брокерам требуется некоторое время для обмена метаданными (этот обмен происходит асинхронно).   -  person Matthias J. Sax    schedule 13.02.2017
comment
Я также получаю эту ошибку и задал вопрос здесь, https://stackoverflow.com/questions/46932127/kafka-failed-to-update-metadata. Не могли бы вы все, пожалуйста, посмотреть   -  person Prakash Pandey    schedule 25.10.2017


Ответы (2)


Скажем, тема имеет 100 разделов (0-99). Kafka позволяет создавать записи в тему, указав конкретный раздел. Столкнулся с проблемой, когда я пытаюсь произвести раздел >99, потому что брокеры отвергают эти записи.

Весьма вероятно, что ваша тема (testtopic) имеет менее 3 разделов, в то время как вы пытаетесь создать testtopic-2.

person Deepak Goyal    schedule 16.01.2019

При создании потребителя установите ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG на true.
Это решит проблему.

person sse    schedule 02.10.2017
comment
Вопрос относится к производителю, а не к потребителю. - person Alejandro Navas; 16.11.2017