#java #apache-kafka #avro #kafka-producer-api
Вопрос:
У меня есть ситуация, когда мой шаблон кафки выглядит так:
KafkaTemplate<String, InternalSelfServiceData> kafkaTemplate;
Где: InternalSelfServiceData -> объект схемы Avro
Когда я вызываю kafkaTemplate.send()
свой тип возврата, это ListenableFuture<SendResult<String, InternalSelfServiceData>>
. Затем я передаю эти данные в качестве параметра следующему методу, но я хочу, чтобы этот метод был универсальным, поэтому я хотел, чтобы они приняли такой параметр ListenableFuture<SendResult<String, ? extends SpecificRecordBase>>
.
Ошибка, возникающая в IntelliJ, заключается в:
Необходимый тип: ListenableFuture <SendResult<Строка, ? расширяет базу данных Specificrecord><Строка, ? расширяет базу данных Specificrecord > >
При условии: ListenableFuture <SendResult<Строка, internalservicedata>
Есть предположения, чего мне не хватает?
Ответ №1:
Попробуйте закодировать свои данные в bytearray (org.apache.avro.specific.SpecificDatumWriter)
Комментарии:
1. Вы можете показать мне пример, связанный с вопросом, который я задал? Я имею в виду использование SpecificDatumWriter с сохранением KafkaTemplate и возможностью прослушивания?
2. Я столкнулся с проблемой несоответствия предоставленного и требуемого типа при отправке данных в очередь, поэтому использовал класс Writer для кодирования и отправки в виде массива байтов