2222
2323package org .wsd .app .config ;
2424
25+ import io .confluent .kafka .schemaregistry .client .CachedSchemaRegistryClient ;
26+ import io .confluent .kafka .schemaregistry .client .SchemaRegistryClient ;
2527import io .confluent .kafka .serializers .KafkaAvroDeserializer ;
28+ import io .confluent .kafka .serializers .KafkaAvroDeserializerConfig ;
2629import io .confluent .kafka .serializers .KafkaAvroSerializer ;
2730import lombok .extern .log4j .Log4j2 ;
2831import org .apache .kafka .clients .consumer .Consumer ;
5457import org .springframework .retry .policy .SimpleRetryPolicy ;
5558import org .springframework .retry .support .RetryTemplate ;
5659
60+ import java .util .Collections ;
5761import java .util .HashMap ;
5862import java .util .Map ;
5963import java .util .UUID ;
@@ -117,16 +121,26 @@ public RetryTemplate retryTemplate() {
117121 return retryTemplate ;
118122 }
119123
124+
120125 @ Bean
121126 public ConsumerFactory <String , Object > consumerFactory () {
122127 final Map <String , Object > configProps = new HashMap <>();
123128 configProps .put (ConsumerConfig .BOOTSTRAP_SERVERS_CONFIG , bootstrapServers );
124129
125130 configProps .put (ConsumerConfig .KEY_DESERIALIZER_CLASS_CONFIG , UUIDDeserializer .class .getName ());
126- configProps .put (ConsumerConfig .VALUE_DESERIALIZER_CLASS_CONFIG , KafkaAvroDeserializer .class .getName ());
127- // // Specify the actual deserializer classes as properties of ErrorHandlingDeserializer
128- // configProps.put(ErrorHandlingDeserializer.KEY_DESERIALIZER_CLASS, UUIDDeserializer.class.getName());
129- // configProps.put(ErrorHandlingDeserializer.VALUE_DESERIALIZER_CLASS, KafkaAvroDeserializer.class.getName());
131+ configProps .put (ConsumerConfig .VALUE_DESERIALIZER_CLASS_CONFIG , ErrorHandlingDeserializer .class .getName ());
132+ configProps .put (ErrorHandlingDeserializer .KEY_DESERIALIZER_CLASS , UUIDDeserializer .class .getName ());
133+ configProps .put (ErrorHandlingDeserializer .VALUE_DESERIALIZER_CLASS , KafkaAvroDeserializer .class .getName ());
134+
135+ // Configure the trusted package for Avro deserialization
136+ configProps .put (KafkaAvroDeserializerConfig .SCHEMA_REGISTRY_URL_CONFIG , "http://localhost:8081" );
137+ configProps .put (KafkaAvroDeserializerConfig .SPECIFIC_AVRO_READER_CONFIG , true );
138+
139+ configProps .put ("specific.avro.reader.schema.trusted" , "true" );
140+ configProps .put ("schema.registry.compatibility.level" , "FULL_TRANSITIVE" );
141+
142+ // Specify the schema registry URL
143+
130144
131145 // Trusted package
132146 configProps .put (JsonDeserializer .TRUSTED_PACKAGES , "org.wsd.app.event" );
@@ -150,9 +164,6 @@ public ConsumerFactory<String, Object> consumerFactory() {
150164 configProps .put (ConsumerConfig .METADATA_MAX_AGE_CONFIG , "300000" );
151165 configProps .put (ConsumerConfig .REQUEST_TIMEOUT_MS_CONFIG , "305000" );
152166 configProps .put (ConsumerConfig .DEFAULT_API_TIMEOUT_MS_CONFIG , "60000" );
153-
154- configProps .put ("schema.registry.url" , "http://localhost:8081" );
155- configProps .put ("specific.avro.read" , "true" );
156167 return new DefaultKafkaConsumerFactory <>(configProps );
157168 }
158169
0 commit comments