Почему обратный вызов в методе Producer.send не выполняется при невозможности отправки сообщения?JAVA

Программисты JAVA общаются здесь
Ответить
Гость
 Почему обратный вызов в методе Producer.send не выполняется при невозможности отправки сообщения?

Сообщение Гость »


В настоящее время я отправляю сообщения в Кафку следующим образом:

попробуй { производитель.send(запись, новый обратный вызов() { public void onCompletion (метаданные RecordMetadata, исключение e) { System.out.println(метаданные); System.out.println(e); если (е != ноль) { System.out.println(e); пытаться { бросить (е); } catch (InvalidTopicException er) { logger.error("Неустранимая ошибка: ", э); Система.выход(-1); } //...другие фатальные исключения... catch (UnknownServerException э-э) { logger.error("Неустранимая ошибка: ", э); Система.выход(-1); }catch (Исключение) { logger.error("Не удалось отправить сообщение в тему:" + theme, er); } } } }); }catch (Исключение е) { logger.error("Не удалось отправить сообщение в тему:" + theme, e); } Я использую Producer.send и не жду возврата метаданных записи перед отправкой следующей записи в очереди, поскольку это займет слишком много времени. Вместо этого я использую метод onCallback для обработки этих данных.

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

Производитель инициализируется следующим образом:

producer = new KafkaProducer(свойства); со следующими свойствами

Свойства mainKafkaProperties = new Properties(); mainKafkaProperties.put("bootstrap.servers", kafkaUrl); mainKafkaProperties.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); mainKafkaProperties.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); mainKafkaProperties.put("acks", "all"); Если сообщения отправляются правильно, System.out.println(metadata); строка правильно печатает метаданные, показывающие, что сообщения отправляются правильно, но когда я удаляю тему для имитации InvalidTopicException вместо выполнения кода в методе catch, я получаю только следующее предупреждение: [kafka-producer-network-thread | Producer-1] WARN org.apache.kafka.clients.NetworkClient — [Producer clientId=producer-1] Ошибка при получении метаданных с идентификатором корреляции 97: {em_om_messages_local=UNKNOWN_TOPIC_OR_PARTITION

Используется библиотека Kafka: org.apache.kafka.clients. Я запускаю программу в отладчике eclipse

Я получаю одну и ту же ошибку независимо от того, сколько разделов имеет тема. Java версия 17.0.6+10 Spring не используется
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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