2017-02-08 2 views
1

У меня есть настройка Kafka с использованием версии 0.9 с базовой конфигурацией как 1 Брокер 1 Тема и 1 раздел.Kafka Producer не ретранслируется, когда Broker Down

Ниже приведены конфигурации производителя, которые я добавил для включения повторной попытки от Продюсера.

props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); 
    props.put(ProducerConfig.RETRIES_CONFIG, 5); 
    props.put(ProducerConfig.RECONNECT_BACKOFF_MS_CONFIG, 500); 
    props.put(ProducerConfig.ACKS_CONFIG, "all"); 
    props.put(ProducerConfig.MAX_BLOCK_MS_CONFIG, 500); 
    props.put(ProducerConfig.METADATA_MAX_AGE_CONFIG, 50); 

Я понимаю, из документов, которые

Установки значения больше нуля заставит клиент повторно отправить любую запись которого не удается отправить с потенциально транзиторной ошибкой. Обратите внимание, что этот повтор не отличается от того, если клиент повторно отправил запись после получения ошибки.

Как мой брокер & Zookeeper не работает, а операция повтора не работает.

ERROR o.s.k.s.LoggingProducerListener - Исключение брошено при отправке сообщения в тему TestTopic1 | org.apache.kafka.common.errors.TimeoutException: Не удалось обновить метаданные через 500 мс.

Мне нужно знать, не хватает ли здесь чего-либо для повторной попытки работать.

ответ

2

Resend (retry) работает только в том случае, если у вас есть подключение к Брокеру и что-то произошло во время отправки сообщения.

Итак, если ваш брокер мертв, нет никаких оснований отправлять сообщение вообще - нет связи. И это исключение.

0

Я думаю, что повторы должны работать в любом случае, даже если брокер не работает. В этом и состоит вся причина повторных попыток. В конце концов, это может быть временная сетевая проблема.

В продукте Kafka 0.9.0.1 есть ошибка, из-за чего попытки не работают. See here.

Исправлено в 0.9.0.2 (которое еще не выпущено) и 0.10. Я бы обновил брокер до 0,10 и повторил попытку.

+0

Я хотел протестировать функциональность повтора, отныне намеренно держал брокера и Zookeeper. Благодарим за указание на эту ошибку, позвольте мне попробовать обновить до 0,10. – user1564626

+0

Проблема остается неизменной даже после обновления до 0,10. Можете ли вы рассказать мне, как это сработало для вас. Можете ли вы рассказать мне, нужны ли какие-либо другие изменения? – user1564626

+0

Вы обновили как производителя, так и сервер? Кроме того, как вы знаете, что это не повторная попытка? Кроме того, когда вы убиваете брокера? Я думаю, изначально он должен быть там, чтобы продюсер работал. Вы могли бы попытаться создать сообщения в цикле (со сном), а затем закрыть брокера во время его создания? Также играйте с retry.backoff.ms. Может быть, установить его на что-то довольно высокое, чтобы вы могли определить, что он на самом деле повторяет? – bibac

Смежные вопросы