Kafkaproducer: как поднять и поймать ошибку неизвестной_topic_or_partition?JAVA

Программисты JAVA общаются здесь
Anonymous
Kafkaproducer: как поднять и поймать ошибку неизвестной_topic_or_partition?

Сообщение Anonymous »

У меня есть Kafka с созданием автомобильного создания темы с ограниченными возможностями. Все темы должны быть созданы с помощью внешнего API. И я хочу реализовать теме Auto Creation =) < /p>

Код: Выделить всё

try { producer.send(...) } catch (UnknownTopicException e) { ... external API call ... }

По умолчанию, kafkaproducer не бросайте исключение в отправку в неизвестную тему. Только журналы бесконечно неизвестно_topic_or_partition ошибки:

Код: Выделить всё

[kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Error while fetching metadata with correlation id 1 : {unknown_topic=UNKNOWN_TOPIC_OR_PARTITION}
Я исправляю это с помощью уменьшения max.block.ms конфигурация. Теперь kafkaproducer не повторно перепродайте, прежде чем бросить исключение:
import org.apache.kafka.clients.producer.*;
import org.apache.kafka.common.serialization.StringSerializer;

import java.util.Properties;
import java.util.concurrent.ExecutionException;

public class Main {
public static void main(String[] args) {
var properties = new Properties();
properties.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "***:9092");
properties.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
properties.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
properties.setProperty("max.block.ms", "0");

try (var producer = new KafkaProducer(properties)) {
System.out.println("recordMetadata: " + producer.send(new ProducerRecord("unknown_topic", "hello world")).get());
} catch (ExecutionException | InterruptedException e) {
throw new RuntimeException(e);
}
}
}
< /code>
Это не является лучшим решением. Какие еще есть варианты?


Подробнее здесь: https://stackoverflow.com/questions/795 ... tion-error

Вернуться в «JAVA»