簡體   English   中英

Spring Cloud Kafka和Avro序列化問題

[英]Spring cloud kafka and avro serialization issue

我使用spring-cloud-stream-schema從kafka讀取avro消息。 我在MessagesChannels配置了輸入通道:

@Input("topicName1")
SubscribableChannel fromInput1();

我有這樣的配置文件:

@Configuration
@EnableBinding(MessagesChannels.class)
@EnableSchemaRegistryClient
public class MessageConfiguration {
  @Bean
  public MessageConverter topic1MessageConverter() throws IOException {
    return new AvroSchemaMessageConverter(MimeType.valueOf("avro/bytes"));
  }
}

我的消費者被稱為

fromInput1().subscribe(this::onMessage);

void onMessage(Message message) {
}

當我實際發送消息時,出現此錯誤:

nested exception is java.lang.ClassCastException: 
org.apache.avro.generic.GenericData$Record cannot be cast to [B

實際上,原始字節已正確解析為org.apache.avro.generic.GenericData$Record 但是春天需要Message類。 如何將GenericData$RecordMessage或如何直接將GenericData$Record轉換為avro-tools類生成的?

更多細節:

2017-03-06 11:23:10.695 ERROR 19690 --- [afka-listener-1] o.s.kafka.listener.LoggingErrorHandler   : Error while processing: ConsumerRecord(topic = topic1, partition = 0, offset = 7979, CreateTime = 1488784987569, checksum = 623709057, serialized key size = -1, serialized value size = 36, key = null, value = {"foor": "bar"})

org.springframework.messaging.MessageHandlingException: error occurred in message handler [org.springframework.cloud.stream.binder.AbstractMessageChannelBinder$ReceivingHandler@4bf9d802]; nested exception is java.lang.ClassCastException: org.apache.avro.generic.GenericData$Record cannot be cast to [B
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:139)
    at org.springframework.integration.channel.FixedSubscriberChannel.send(FixedSubscriberChannel.java:70)
    at org.springframework.integration.channel.FixedSubscriberChannel.send(FixedSubscriberChannel.java:64)

我認為您需要將傳入消息通道的contentType設置為使用此處指定的application/*+avro

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM