У меня есть огромная масса записей данных для Kafka, использующих пакетную обработку и сжатие.
Я перепробовал многие свойства производителя, чтобы исправить исключение / тайм-аут при отправке данных брокеру.
My one record size is 5486 Bytes(total count is around 20000).
Ниже приведены мои свойства
acks=all
retries=0
batch.size=1MB
buffer.memory=101*1024*1024
linger.ms=1000
key.serializer=org.apache.kafka.common.serialization.StringSerializer
value.serializer=org.apache.kafka.common.serialization.StringSerializer
compression.type=lz4
request.timeout.ms=90000
props.put(ProducerConfig.METADATA_FETCH_TIMEOUT_CONFIG, 90000);
props.put(ProducerConfig.MAX_BLOCK_MS_CONFIG, 90000
, безусловно, увеличение времени ожидания и другие большие значения будут влиять на пропускную способность моего производителя.
Вопрос в том, какой из них хорош.1. Оптимизация batch.size, другие таймауты путем их увеличения.2. Использование количества повторов + оптимальное значение свойств времени ожидания.
Исключения
1)2018-05-29 09:19:40.919 ERROR 134700 --- [ad | producer-1] o.s.k.support.LoggingProducerListener : Exception thrown when sending a message with key='null' and payload='
org.apache.kafka.common.errors.TimeoutException: Expiring 2 record(s) for demoTopicxyz-0 due to 30012 ms has passed since last append