Почему обратный вызов в методе 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 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Realm Swift6 не может отключить звук Предупреждение о невозможности отправки
    Anonymous » » в форуме IOS
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Realm Swift6 не может отключить звук Предупреждение о невозможности отправки
    Anonymous » » в форуме IOS
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Realm Swift6 не может отключить звук Предупреждение о невозможности отправки
    Anonymous » » в форуме IOS
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Почему обратный вызов в методе продюсера.
    Anonymous » » в форуме JAVA
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Kafka Producer не повторяет попытку в приложении Spring Boot
    Гость » » в форуме JAVA
    0 Ответы
    22 Просмотры
    Последнее сообщение Гость

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