Updfrom thewhen you look at theg Spring Investigation Other people was not easy, but which had nothing to do with Spring season Data Rest by itself

Updfrom thewhen you look at theg Spring Investigation Other people was not easy, but which had nothing to do with Spring season Data Rest by itself

However, it might not add up to even do that. I can not ask the fresh new developers as to the reasons it was done this means, they aren’t right here any more. Which project’s story is only able to be told due to their Git records.

Instructions read upgrading Spring Investigation Other individuals

We think the audience is having fun with Spring Data Others completely wrong, wrongly mixing WebMVC axioms. If we had not done this right from the start, some thing will have run far easier.

We are now carried out with the latest Springtime Analysis Rest migration. It is the right time to disperse on to all of our next Spring component, Spring Kafka.

Spring Kafka

Spring Kafka, or rather Spring to have Apache Kafka , is a fantastic treatment for have fun with Kafka in your Springtime plans. It gives effortless-to-have fun with themes getting giving texts and you can regular Springtime annotations having consuming texts.

Configuring the latest consumers

step step 1 [ERROR] coffee.lang.IllegalStateException: Didn't load ApplicationContext 2 3 As a result of: org.springframework.beans.factory.BeanCreationException: Error starting bean with identity 'consumerFactory' outlined in category highway funding [ de / software / config / KafkaConsumerConfig . class ]: cuatro 5 Caused by: java . lang . NullPointerException 6 at java . ft / java . util . concurrent . ConcurrentHashMap . putVal ( ConcurrentHashMap . java: 1011 ) 7 at java . base / java . util . concurrent . ConcurrentHashMap . init >( ConcurrentHashMap . java: 852 ) 8 at org . springframework . kafka . center . DefaultKafkaConsumerFactory . init >( DefaultKafkaConsumerFactory . java: 125 ) 9 at org . springframework . kafka . core . DefaultKafkaConsumerFactory . init >( DefaultKafkaConsumerFactory . java: 98 ) 10 at de . app . config . KafkaConsumerConfig . consumerFactory ( AbstractKafkaConsumerConfig . java: 120 ) 

It turns out, we had been configuring the consumerConfigs bean and setting null values in its properties. The following change from HashMap to ConcurrentHashMap means we can no longer configure null values. We refactored our code and now tests are green. Easy-peasy.

Kafka messages with JsonFilter


1 [ERROR] org .apache .kafka mon .problems .SerializationException : Normally 't serialize studies [Experiences [payload=MyClass(Id=201000000041600097, . ] getting procedure [my-topic] 2 3 Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: You should never manage PropertyFilter esposa escandinavo which have id ‘myclassFilter' ; no FilterProvider configured (because of source strings: de- .test .Enjoy [ "payload" ] ) 4 in the com .fasterxml .jackson .databind .exc .InvalidDefinitionException .from (InvalidDefinitionException .coffee : 77 ) 

Some of our Java Beans use ato manipulate the serialization and deserialization. This requires a propertyFilter to be configured on the ObjectMapper.
Spring for Apache Kafka made a change to the JsonSerializer , introducing an ObjectWriter . When the ObjectWriter instance is created, the ObjectMapper configuration is copied, not referenced. Our test case was re-configuring the ObjectMapper with the appropriate propertyFilter after the ObjectWriter instance was created. Hence, the ObjectWriter didn't know anything about the propertyFilter (since the configuration was already copied). After some refactoring, changing how we create and configure the JsonSerializer , our test cases were green.
Running our build $ mvn clean verify finally resulted in a green build. Everything is working as it should. We pushed our changes to Bitbucket and everything built like a charm.

Lessons read updating Spring Kafka


Classes read while in the Springtime Footwear modify


Spring and Spring Boot do a great job documenting their releases, their release notes are well maintained. That being said, upgrading was challenging, it took quite a while before everything was working again. A big part of that is on us, for not following best practices, guidelines, etc. A lot of this code was written when the team was just starting out with Spring and Spring Boot. Code evolves over time, without refactoring and applying those latest practices. Eventually that catches up with you, but we use this as a learning experience and improved things. Our test cases are now significantly better, and we'll keep a closer eye on them moving forward.
John150214 administrator

Leave A Comment