Spring Boot | Apache Kafka JSON Serialization & Deserialization Example | JavaTechie

Поделиться
HTML-код
  • Опубликовано: 9 фев 2025
  • In this tutorial, We will learn How to send and receive a Java Object as a JSON byte[] to and from Apache Kafka using JsonSerializer and JsonDeserializer .
    👉 How to configure Serializer and Deserializer using application.yml
    👉 How to configure Serializer and Deserializer using java base config approach
    #JavaTechie #SpringBoot #Kafka
    Spring boot microservice Premium course lunched with 70% off 🚀 🚀
    Hurry-up & Register today itself!
    COURSE LINK : javatechie5246...
    PROMO CODE : JAVATECHIE50
    GitHub:
    github.com/Jav...
    github.com/Jav...
    Blogs:
    / javatechie
    Facebook:
    / javatechie
    Join this channel to get access to perks:
    www.youtube.co...
    guys if you like this video please do subscribe now and press the bell icon to not miss any update from Java Techie
    Disclaimer/Policy:
    --------------------------------
    Note : All uploaded content in this channel is mine and its not copied from any community ,
    you are free to use source code from above mentioned GitHub account

Комментарии • 69

  • @saznajuhirdeen6547
    @saznajuhirdeen6547 10 месяцев назад +1

    Kafka series are well structured and theoritical explanation. Superb!!! Keep on doing!!

  • @prashantb4220
    @prashantb4220 Год назад +5

    I just finished your entire playlist on Kafka, Amazing content. Thank you for helping me

  •  10 месяцев назад +1

    amazing content i followed you since i started my carrier. thanks for you support.

  • @fathimashabnamcb6099
    @fathimashabnamcb6099 Год назад +1

    For the first time i completed a tutorial . Thank you so much for this amazing content. Now I got an idea on kafka

  • @techntrade
    @techntrade Год назад +2

    Amazing series, Please continue this series with Kafka Streams.

    • @Javatechie
      @Javatechie  Год назад +1

      Yes I will continue from coming weekend

  • @Unknown-explorerr
    @Unknown-explorerr Год назад +1

    Thanks you so much learned apache kafka within few hours

  • @viveksinghbhadauriya7929
    @viveksinghbhadauriya7929 8 месяцев назад +1

    Dear Sir,
    Namaskaram, And first of all Thank You for teaching us so briefly. and also i have been learning a lot from you .
    the way you have said "IT IS CRYING" while changing String message to Customer customer object at 5.32, i laughed HARD man. Thank You so much sir. its a little thing but i laughed a lot clapping for 5 minutes .. THANK YOU AGAIN SIR

    • @Javatechie
      @Javatechie  8 месяцев назад

      Hello Vivek thank you so much for your kind words 😊 and I am so happy to hear that you enjoy the content 😀. Keep learning buddy

  • @rajenderprasad1193
    @rajenderprasad1193 Год назад +1

    as usual -- awesome.. Thanks Basant

  • @as_wani
    @as_wani Год назад +1

    Yeah great content, keep up the good work!!!👍

  • @YoursPravat
    @YoursPravat Год назад +1

    Amazing❤
    Big follower of your content brother😊

  • @gopisambasivarao5282
    @gopisambasivarao5282 Год назад +1

    Thanks so much Basant, appreciate your efforts!❤

  • @kynjribajwatmarbaniang8659
    @kynjribajwatmarbaniang8659 7 месяцев назад +1

    as coures progress we see less and less views 😀😀😀. but seriously this course is good those of you who completes it helps a lot

    • @Piddie
      @Piddie 5 месяцев назад

      Agree

  • @shubham30372
    @shubham30372 Год назад +1

    Good Content 👍

  • @ChandlerBing11
    @ChandlerBing11 Год назад +1

    Amazing content!! Thank you so much ❤

  • @lunatichigh2896
    @lunatichigh2896 Год назад +2

    Thank you

  • @Vithal_Nivargi
    @Vithal_Nivargi 7 месяцев назад +1

    Thanks 🙏❤

  • @phanimc11211
    @phanimc11211 Год назад +1

    thanks for ur efforts

  • @ashkuna626
    @ashkuna626 Год назад +1

    Hello Sir, You are really doing good job. I am watching your videos and Its really very amazing.
    Can you please make video on Kafka interview questions?

  • @syedmustafa7875
    @syedmustafa7875 4 месяца назад

    Thank you sir

  • @mysterious5729
    @mysterious5729 Год назад +2

    So it's Crying... got me 😂😂

  • @ankitratnani3582
    @ankitratnani3582 Год назад +1

    can you please make a video on how to use common pojo and dto classs instead creating same Customer class in producer and consumer projects as you mentioned at 5:33

  • @AnkitRatnani-v5h
    @AnkitRatnani-v5h 11 месяцев назад

    can you please explain why you create producer factory and kafka template bean? at 19:30 and how that both are working in configuration? I was able to understand kafka template and kafka listener when you create bean in service class in previous section of kafka series.

  • @bogdanjovanovic2737
    @bogdanjovanovic2737 3 месяца назад

    Hi, could you please explain how to handle DeserializationError? For example if producer publishes the Message class but the consumer is expecting User class.

  • @pnamm6501
    @pnamm6501 Год назад +1

    another great video! can you cover authentication authorization used in kafka?

  • @rishiraj2548
    @rishiraj2548 Год назад +1

    Great thanks

  • @sushantsuman4329
    @sushantsuman4329 10 месяцев назад

    I have one doubt only suppose i m using 10 consumer in consumer_group in kafka all consumer need to implement producer data type class(DTO) to deserializing. any better way to do that because code is repeating in each service . what i mean by that suppose i m producing order data in one of topic in order creation then it is necessary in each consumer class like invoice email and inventory to create DTO class for order to deserializing. Any better way GraphQL? can we use

  • @gopishettymahindra2713
    @gopishettymahindra2713 Год назад +1

    Thank you so much sir. Can you please upload spring boot annotation second part.

    • @Javatechie
      @Javatechie  Год назад

      Yes buddy i will but required a few more times to prepare for the PPT

  • @NikhilJain08
    @NikhilJain08 Год назад +1

    Hello sir!! What approach can we use for consumers not to connect to kafka directly instead of some api?? Also if the producer wants to move to a new message broker, in that case how the consumer should not be affected by the change at the producer???

    • @Javatechie
      @Javatechie  Год назад

      No if there is a configuration change in the producer then consumers need to have those changes . We can use some centralized configuration approach to manage it to avoid manual efforts

  • @xyZzzdf
    @xyZzzdf 10 месяцев назад +1

    sir have you changed this playlist ? before it was 21 videos, but now only 13

    • @Javatechie
      @Javatechie  10 месяцев назад

      No it's 13 only . I haven't uploaded 21 videos. Please check properly

  • @حامدنیکبخت-ن5ع
    @حامدنیکبخت-ن5ع Год назад

    Great please continue.
    how to get 1000000000 record get from DB and save to another DB by Kafka

  • @debabratasarma5945
    @debabratasarma5945 Год назад

    At the consumer side, if i am using a config file and not the yml file, with the same configuration and classes like in the yml i.e. the server, string deserializer and json deserializer i am getting an error by the org.springframework.messaging.convertor.MessageConversionException saying : cannot convert from java.lang.String to com.example.dto.Customer. This would occur when the serialization and de serialization do not match or may be something else. What bugs me is if i use the yml file everything runs smooth but when i switch to a config file the consumer application cannot convert the message to Object type. Is there any solution?

    • @Javatechie
      @Javatechie  Год назад

      Please share your GitHub link

  • @vulo3180
    @vulo3180 Год назад +1

    Great job, on to the next topic. Can you use Kafka Streams or KSQLDB? Thanks for all.

    • @Javatechie
      @Javatechie  Год назад +1

      I will definitely do that.

  • @jay-rathod-01
    @jay-rathod-01 Год назад +1

    Bro why didn't we use kafka temple in choreography

    • @Javatechie
      @Javatechie  Год назад +1

      I have used spring web flux so the sink is used as a consumer over there . If you start implementing the same with the traditional approach then you can go with the Kafka template

    • @jay-rathod-01
      @jay-rathod-01 Год назад +1

      Got it thanks👍

  • @vadimsokolov6058
    @vadimsokolov6058 9 месяцев назад

    I have com.producer.dto.Customer for Producer application.
    And com.consumer.dto.Customer for Consumer application.
    Since these paths do not match the process does not work.
    And it is not possible to specify in .yml configuration that the incoming com.producer.dto.Customer should be mapped to com.consumer.dto.Customer.
    So I have to rewrite one of the applications completely to match the package structure or create a custom Json deserializer.

    • @machinegunkohli
      @machinegunkohli 8 месяцев назад

      could you please send rewrited code here

    • @084_sakshamgupta3
      @084_sakshamgupta3 2 месяца назад +1

      public class CustomCustomerDeserializer implements Deserializer {
      private final ObjectMapper objectMapper = new ObjectMapper();
      @Override
      public Customer deserialize(String topic, byte[] data) {
      try {
      return objectMapper.readValue(data, Customer.class);
      } catch (Exception e) {
      throw new RuntimeException("Failed to deserialize Customer", e);
      }
      }
      }

  • @PrachlitEducation
    @PrachlitEducation 3 месяца назад +1

    Explanation is not clear why we transfer all properties file into class and you remain in such a hurry to make video that you are just copy pasting code that you have done from somewhere else and your same code is also not working in my ide. A little bit patience is required to give clear explanation and video making. not upto the mark

    • @Javatechie
      @Javatechie  3 месяца назад

      Thank you 😊 for your feedback buddy. Your response says you haven't gone through previous video please check it once and then let me know if you are having same issue again.

  • @kishore87jetty
    @kishore87jetty Год назад +2

    Sorry to bother you too much, I am using the same deserializer , and I am getting exception its not a trusted source even after configuring.
    properties:
    spring:
    json:
    trusted:
    packages: com.example.kafka.consumer.dto
    It keeps on giving me error on this one
    Caused by: org.apache.kafka.common.errors.RecordDeserializationException: Error deserializing key/value for partition TestTopic-1 at offset 0. If needed, please seek past the record to continue consumption.
    Caused by: org.apache.kafka.common.errors.RecordDeserializationException: Error deserializing key/value for partition TestTopic-1 at offset 0. If needed, please seek past the record to continue consumption.
    at org.apache.kafka.clients.consumer.internals.CompletedFetch.parseRecord(CompletedFetch.java:309)
    at org.apache.kafka.clients.consumer.internals.CompletedFetch.fetchRecords(CompletedFetch.java:263)
    at org.apache.kafka.clients.consumer.internals.AbstractFetch.fetchRecords(AbstractFetch.java:340)
    at org.apache.kafka.clients.consumer.internals.AbstractFetch.collectFetch(AbstractFetch.java:306)
    Caused by: java.lang.IllegalArgumentException: The class 'com.example.kafka.producer.dto.Customer' is not in the trusted packages: [java.util, java.lang, -java.util-java.lang-com.example.kafka.consumer.dto.*]. If you believe this class is safe to deserialize, please provide its name. If the serialization is only done by a trusted source, you can also enable trust all (*).
    Posted in instack over flow
    stackoverflow.com/questions/77804089/unable-to-deserialize-events-from-spring-boot-consumer-getting-an-error-even-aft
    gitlab.com/kishore87jetty/kafkaproducer
    gitlab.com/kishore87jetty/kafkaconsumer

    • @Javatechie
      @Javatechie  Год назад

      Could you please share your code in GitHub? I will take a look and figure it out

    • @kishore87jetty
      @kishore87jetty Год назад +1

      @@Javatechie Added details in my first comment itself

    • @kishore87jetty
      @kishore87jetty Год назад

      There are one more branch ProducerConfig and COnsumerConfig in respective repository . the config once are also throwing some error.

  • @prajularao
    @prajularao 8 месяцев назад +1

    Error:Can't serialize data [com.spring.kafkaproducer.example.dto.Customer@4ad91b0e] for topic [demoCust]
    I am getting ths error
    Please help...
    Below is the config
    spring:
    kafka:
    producer:
    bootstrap-servers: localhost:9092
    key-serializer: org.apache.kafka.common.serialization.StringSerializer
    value-serializer: org.springframework.kafka.support.serializer.JsonSerializer

    • @Javatechie
      @Javatechie  8 месяцев назад

      Please configure trusted package

    • @prajulakottai1338
      @prajulakottai1338 8 месяцев назад

      But producer is throwing the error, though I added the trusted package in consumer yml

    • @Javatechie
      @Javatechie  8 месяцев назад

      @@prajulakottai1338 you need to add in both producer and consumer buddy

    • @prajularao
      @prajularao 8 месяцев назад

      @@Javatechie still not working>please help
      org.springframework.context.ApplicationContextException: Failed to start bean 'org.springframework.kafka.config.internalKafkaListenerEndpointRegistry'
      Caused by: java.lang.IllegalStateException: java.lang.ClassNotFoundException: com.spring.kafkaproducer.example.dto.Customer
      below is the config
      producerProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,
      "localhost:9092");
      producerProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
      StringSerializer.class);
      producerProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,JsonSerializer.class);
      producerProps.put(JsonDeserializer.TRUSTED_PACKAGES,"com.spring.kafkaproducer.example.dto");
      consumerProps.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG,
      "localhost:9092");
      consumerProps.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG,
      StringDeserializer.class);
      consumerProps.put(ConsumerConfig.GROUP_ID_CONFIG,"group4");
      consumerProps.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG,JsonDeserializer.class);
      consumerProps.put(JsonDeserializer.TRUSTED_PACKAGES,"com.spring.kafkaproducer.example.dto");
      consumerProps.put(JsonDeserializer.USE_TYPE_INFO_HEADERS,"false");
      consumerProps.put(JsonDeserializer.VALUE_DEFAULT_TYPE ,"com.spring.kafkaproducer.example.dto.Customer");
      consumerProps.put(JsonDeserializer.TYPE_MAPPINGS, "customer:com.spring.kafkaproducer.example.dto.Customer");

    • @avognonlionel7767
      @avognonlionel7767 7 месяцев назад +1

      @@prajularao I faced the same issue but solved it defining in consumer application the Customer object with the same package as defined in producer's application.

  • @KAMMARIRAJESH151
    @KAMMARIRAJESH151 Год назад

    how do we handle this sir?
    .KafkaMessageListenerContainer : Consumer exception
    java.lang.IllegalStateException: This error handler cannot process 'SerializationException's directly; please consider configuring an 'ErrorHandlingDeserializer' in the value and/or key deserializer
    at org.springframework.kafka.listener.DefaultErrorHandler.handleOtherException(DefaultErrorHandler.java:198)

    • @janyajoshi
      @janyajoshi Год назад

      Can you share your git link. I'll try to see if I can help.

    • @KAMMARIRAJESH151
      @KAMMARIRAJESH151 Год назад

      @@janyajoshi rajeshoo7/Kafka-project/tree/master

    • @mohamedsedahmad585
      @mohamedsedahmad585 Год назад

      did you find the solution ?

    • @gayannanayakkara8386
      @gayannanayakkara8386 Год назад +4

      I found the solution. its because of type mapping. JavaTechie doesnt get it as producer DTO and consumer DTO is in same package.
      You should provide like this. is my DTO.
      Producer : (you should mention your DTO package name in producer as type with the Class name)
      properties:
      spring:
      json:
      type:
      mapping: customer:com.gnanayakkara..dto.Customer
      Consumer : (You should mention where is the mapping Class available in Consumer side.)
      properties:
      spring:
      json:
      trusted:
      packages: com.gnanayakkara.kafkaproducer.dto
      type:
      customer:com.gnanayakkara..dto.Customer

    • @Javatechie
      @Javatechie  Год назад +3

      Awesome and appreciate your findings, but just keep a note this is not a recommended way to send raw objects as a Kafka message. I will upload a video on it .
      Hints : Kafka provides us with flexy that we can deal with record with any data type

  • @2RAJ21
    @2RAJ21 5 месяцев назад

    Thank you