У меня есть KafkaProducer
, который внезапно начал бросать TimeoutExceptions при попытке отправить сообщение. Несмотря на то, что я установил свойство max.block.ms
на 60000 мс, а тестовые блоки на 60 секунд, сообщение об ошибке, которое я получаю, всегда имеет время менее 200 мс. Единственный раз, когда он на самом деле показывает 60000 мс, - это запустить его в режиме отладки и выполнить метод waitOnMetadata
вручную. ПримерApache KafkaProducer throwing TimeoutException при отправке сообщения
ошибка:
org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 101 ms.
Кто-нибудь знает, почему она вдруг не сможет обновить метаданные? Я знаю, что это не моя реализация производителя, которая является неисправной, так как я не только не менял ее с тех пор, как она работала, если я запускаю свои тесты на другом сервере, который все они проходят. Какие причины на стороне сервера могут быть для этого? Должен ли я перезапустить своих брокеров? И почему сообщение с таймаутом покажет неправильное время, если я просто позволю ему запустить?
установка Производитель:
val props = new Properties()
props.put("bootstrap.servers", getBootstrapServersFor(datacenter.mesosLocal))
props.put("batch.size","0")
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer")
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer")
props.put("max.block.ms","60000")
new KafkaProducer[String,String](props)
Являются ли машины хостингом брокеров в средах IaaS? Если это так, вам лучше настроить config рекламируемого.host.name и подключиться к ним клиентом. – amethystic
Если бы я не задал значение раньше, когда он работал, и я не задал значение на других моих серверах, где он работает, почему его настройка теперь поможет? – annedroiid
Вы пробовали работать с kafka-console-продюсером? –