Spring cloud Kafka streams Deserialiation issue wtih Caused by: java.lang.ClassCastException: ClassName cannot be cast to ClassName

Bobby

I'm trying to use the spring cloud Kafka streams binder to consume Avro messages from the topic but not able to fix this classCast exception.

Here is my code:

  @Bean
  public Consumer<KStream<EventKey, Event>> process(){
    return input -> {
      input.peek(((key, value) -> logger.info("key value: "+ key.toString()+" value: "+value.toString())));
      logger.info("Received:" + input);
    };
  }

  @Bean
  public Serde<EventKey> avroInSerde(){
    final SpecificAvroSerde<EventKey> avroInSerde = new SpecificAvroSerde<>();
    Map<String, Object> serdeProperties = new HashMap<>();
    return avroInSerde;
  }

  @Bean
  public Serde<Event> avroOutSerde(){
    final SpecificAvroSerde<Event> avroOutSerde = new SpecificAvroSerde<>();
    return avroOutSerde;
  }

Binder:

spring:
  application:
    name: ${applicaton-name}
  cloud:
    stream:
      function:
        definition: process
      bindings:
        process-in-0:
          destination: ${input-topic-name}
          contentType: application/Avro
        process-out-0:
          destination: ${enriched-topic-name}
          contentType: application/Avro
      binding-retry-interval: 30
      kafka:
        streams:
          binder:
            brokers: ${kafka-broker}
            application-id: ${consumer-group-name}
            auto-create-topics: false
            auto-add-partitions: false
            configuration:
              processing.guarantee: at_least_once
              auto.offset.reset: earliest
              schema.registry.url: ${kafka-schema-registry}
              auto-register-schema: false
              security.protocol: SSL
              useNativeEncoding: true
              specific.avro.reader: true

Error:

Note that although incorrect Serdes are a common cause of error, the cast exception might have another cause (in user code, for example). For example, if a processor wires in a store, but casts the generics incorrectly, a class cast exception could be raised during processing, but the cause would not be wrong Serdes.
    at org.apache.kafka.streams.processor.internals.ProcessorNode.process(ProcessorNode.java:146)
    at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:236)
    at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:216)
    at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:168)
    at org.apache.kafka.streams.processor.internals.SourceNode.process(SourceNode.java:96)
    at org.apache.kafka.streams.processor.internals.StreamTask.lambda$process$1(StreamTask.java:679)
    at org.apache.kafka.streams.processor.internals.metrics.StreamsMetricsImpl.maybeMeasureLatency(StreamsMetricsImpl.java:836)
    at org.apache.kafka.streams.processor.internals.StreamTask.process(StreamTask.java:679)
    at org.apache.kafka.streams.processor.internals.TaskManager.process(TaskManager.java:1033)
    at org.apache.kafka.streams.processor.internals.StreamThread.runOnce(StreamThread.java:690)
    at org.apache.kafka.streams.processor.internals.StreamThread.runLoop(StreamThread.java:551)
    at org.apache.kafka.streams.processor.internals.StreamThread.run(StreamThread.java:510)
Caused by: java.lang.ClassCastException: EventKey cannot be cast to EventKey
    at org.apache.kafka.streams.kstream.internals.KStreamPeek$KStreamPeekProcessor.process(KStreamPeek.java:42)
    at org.apache.kafka.streams.processor.internals.ProcessorNode.lambda$process$2(ProcessorNode.java:142)
    at org.apache.kafka.streams.processor.internals.metrics.StreamsMetricsImpl.maybeMeasureLatency(StreamsMetricsImpl.java:836)
    at org.apache.kafka.streams.processor.internals.ProcessorNode.process(ProcessorNode.java:142)

i tried both the approaches as mentioned in this link https://spring.io/blog/2019/12/04/stream-processing-with-spring-cloud-stream-and-apache-kafka-streams-part-3-data-deserialization-and-serialization but no luck

Did I missed anything?.

Gary Russell

Caused by: java.lang.ClassCastException: EventKey cannot be cast to EventKey

This is probably a class loader problem; with the deserializer and consumer bean being loaded by different class loaders, are you using Spring DevTools?

With spring-kafka, this can be avoided by explicitly creating the consumer factory and injecting the deserializer into it.

With spring-cloud-stream (starting with version 3.0.6) you can provide a ClientFactoryCustomizer bean and inject the deserializer instances (defined as @Beans, so that they use the same class loader).

Or, stop using DevTools.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to className

From Dev

Caused by: java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

From Dev

Caused by: java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

From Dev

Spring websocket @messagemapping de-serialization issue java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast

From Dev

Caused by: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText

From Dev

Caused by: java.lang.ClassCastException: libcore.reflect.ParameterizedTypeImpl cannot be cast to java.lang.Class when use Generic Type

From Dev

java.lang.ClassCastException: cannot be cast to java.lang.Object

From Dev

java.lang.ClassCastException: cast to created interface issue?

From Dev

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast

From Dev

Greenfoot: java.lang.ClassCastException: Obstacle cannot be cast to BallProjectile

From Dev

java.lang.ClassCastException: JedisConnectionFactory cannot be cast to ConnectionFactory

From Dev

java.lang.ClassCastException: DTOObject cannot be cast to DTOObject

From Dev

java.lang.ClassCastException: CLASS/Activity cannot be cast to MainActivity

From Dev

ClassCastException: JSONArray cannot be cast to java.lang.String[]

From Dev

How to resolve ClassCastException: java.lang.String cannot be cast exception

From Dev

java.lang.ClassCastException (Cannot cast class to same class)

From Dev

serverError: class java.lang.ClassCastException java.lang.Integer cannot be cast to java.lang.String

From Dev

JRException: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean

From Dev

Hibernate : java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Double

From Dev

java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

From Dev

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer in tableau?

From Dev

Getting java.lang.ClassCastException: java.lang.Boolean cannot be cast to clojure.lang.IFn. Thoughts?

From Dev

java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String

From Dev

java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String

From Dev

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

From Dev

How to fix: java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Integer

From Dev

java.lang.ClassCastException: java.util.HashMap cannot be cast to java.lang.String

From Dev

java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.lang.Integer in DAO

From Dev

java.lang.ClassCastException: class java.sql.Date cannot be cast to java.lang.String

Related Related

  1. 1

    java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to className

  2. 2

    Caused by: java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

  3. 3

    Caused by: java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

  4. 4

    Spring websocket @messagemapping de-serialization issue java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast

  5. 5

    Caused by: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText

  6. 6

    Caused by: java.lang.ClassCastException: libcore.reflect.ParameterizedTypeImpl cannot be cast to java.lang.Class when use Generic Type

  7. 7

    java.lang.ClassCastException: cannot be cast to java.lang.Object

  8. 8

    java.lang.ClassCastException: cast to created interface issue?

  9. 9

    java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast

  10. 10

    Greenfoot: java.lang.ClassCastException: Obstacle cannot be cast to BallProjectile

  11. 11

    java.lang.ClassCastException: JedisConnectionFactory cannot be cast to ConnectionFactory

  12. 12

    java.lang.ClassCastException: DTOObject cannot be cast to DTOObject

  13. 13

    java.lang.ClassCastException: CLASS/Activity cannot be cast to MainActivity

  14. 14

    ClassCastException: JSONArray cannot be cast to java.lang.String[]

  15. 15

    How to resolve ClassCastException: java.lang.String cannot be cast exception

  16. 16

    java.lang.ClassCastException (Cannot cast class to same class)

  17. 17

    serverError: class java.lang.ClassCastException java.lang.Integer cannot be cast to java.lang.String

  18. 18

    JRException: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean

  19. 19

    Hibernate : java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Double

  20. 20

    java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

  21. 21

    java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer in tableau?

  22. 22

    Getting java.lang.ClassCastException: java.lang.Boolean cannot be cast to clojure.lang.IFn. Thoughts?

  23. 23

    java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String

  24. 24

    java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String

  25. 25

    java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

  26. 26

    How to fix: java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Integer

  27. 27

    java.lang.ClassCastException: java.util.HashMap cannot be cast to java.lang.String

  28. 28

    java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.lang.Integer in DAO

  29. 29

    java.lang.ClassCastException: class java.sql.Date cannot be cast to java.lang.String

HotTag

Archive