Updfrom theduring theg Spring season Analysis Rest wasn’t simple, however, that had nothing to do with Spring Research Other people alone

Having said that, it might not make sense to even do this. I can not query the newest builders as to why it had been done this way, they aren’t here any more. So it project’s facts can just only be told and their Git history.

Coaching read upgrading Spring Investigation Other individuals

I believe we are using Springtime Analysis Rest incorrect, incorrectly mix WebMVC maxims. Whenever we had not done so right from the start, some thing might have work with much simpler.

We are now completed with the newest Spring season Studies Rest migration. It is time to move onto our 2nd Springtime module, Springtime Kafka.

Springtime Kafka

Spring Kafka, or in other words Springtime to have Apache Kafka , is a great way to have fun with Kafka on your Spring systems. It gives easy-to-explore themes to own sending texts and you can typical Spring season annotations for taking messages.

Configuring the customers

step one [ERROR] coffee.lang.IllegalStateException: Failed to load ApplicationContext 2 3 Because of: org.springframework.beans.facility.BeanCreationException: Error doing bean which have name 'consumerFactory' discussed in group street funding [ de / app / config / KafkaConsumerConfig . class ]: cuatro 5 Caused by: java . lang . NullPointerException 6 at java . legs / 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 ) nine 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 texts that have JsonFilter


1 [ERROR] org .apache .kafka mon .mistakes .SerializationException : Can also be 't serialize data [Feel [payload=MyClass(Id=201000000041600097, . ] to possess topic [my-topic] 2 3 Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Do not resolve PropertyFilter which have id ‘myclassFilter' ; zero FilterProvider set up (thanks to site chain: de- .sample .Knowledge [ "payload" ] ) 4 in the com .fasterxml .jackson .databind .exc .InvalidDefinitionException .out-of (InvalidDefinitionException .coffees : 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.

Training discovered upgrading Spring season Kafka


Instructions sexy linda Yemeni chica discovered during Springtime Footwear upgrade


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.