Почему обратный вызов в методе Producer.send не выполняется при невозможности отправки сообщения? ⇐ 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 не используется
В настоящее время я отправляю сообщения в Кафку следующим образом:
попробуй { производитель.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 не используется
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Realm Swift6 не может отключить звук Предупреждение о невозможности отправки
Anonymous » » в форуме IOS - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Realm Swift6 не может отключить звук Предупреждение о невозможности отправки
Anonymous » » в форуме IOS - 0 Ответы
- 28 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Realm Swift6 не может отключить звук Предупреждение о невозможности отправки
Anonymous » » в форуме IOS - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-