![](/img/trans.png)
[英]Avro Deserialization exception handling with Spring Cloud Stream
[英]Spring cloud stream kafka avro deserialization
我正在编写一个使用 Avro 消息的 Spring Cloud 流接收器应用程序。 我试图让应用程序使用消息,但是我收到以下错误。
org.springframework.messaging.converter.MessageConversionException: Cannot convert from [[B] to [org.apache.avro.generic.GenericRecord] for GenericMessage [payload=byte[304], headers={kafka_offset=42898134, kafka_consumer=org.apache.kafka.clients.consumer.KafkaConsumer@74f810ba, deliveryAttempt=3, kafka_timestampType=NO_TIMESTAMP_TYPE, kafka_receivedMessageKey=null, kafka_receivedPartitionId=0, kafka_receivedTopic=bam_hrapi, kafka_receivedTimestamp=-1, contentType=avro/bytes}], failedMessage=GenericMessage [payload=byte[304], headers={kafka_offset=42898134, kafka_consumer=org.apache.kafka.clients.consumer.KafkaConsumer@74f810ba, deliveryAttempt=3, kafka_timestampType=NO_TIMESTAMP_TYPE, kafka_receivedMessageKey=null, kafka_receivedPartitionId=0, kafka_receivedTopic=*****, kafka_receivedTimestamp=-1, contentType=avro/bytes}]
我尝试阅读 spring 参考文档并相应地配置应用程序。 我尝试了各种配置,但仍然出现错误。
下面是我的应用程序配置
@SpringBootApplication
@EnableBinding(Processor.class)
public class UserApp {
public static void main(String[] args) {
SpringApplication.run(UserApp.class, args);
}
@Bean
public MessageConverter userMessageConverter() {
AvroSchemaMessageConverter converter = new AvroSchemaMessageConverter(MimeType.valueOf("avro/bytes"));
converter.setSchemaLocation(new ClassPathResource("schemas/MapsEvent.avsc"));
return converter;
}
}
和我的流监听器如下
@Component
@Slf4j
public class UserAdditionEventListener {
@StreamListener(Processor.INPUT)
@SendTo(Processor.OUTPUT)
public String handleEvents(GenericRecord input) {
System.out.println(input);
return "hello";
}
}
下面是我的 application.properties 文件
spring.cloud.stream.bindings.input.destination=user_topic
spring.cloud.stream.bindings.output.destination=user_output_topic
spring.cloud.stream.kafka.binder.brokers=dd-kafa-100
spring.cloud.stream.default.consumer.headerMode=raw
spring.cloud.stream.bindings.input.content-type=avro/bytes
添加@StreamMessageConverter。 请参阅文档... https://docs.spring.io/spring-cloud-stream/docs/Elmhurst.SR1/reference/htmlsingle/#spring-cloud-stream-overview-user-defined-message-converters
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.