Having said that, may possibly not seem sensible to even do this. I can not ask this new developers why it absolutely was done this method, they aren’t here more. This project’s facts are only able to find out employing Git record.
We suspect the audience is having fun with Spring Studies Other people wrong, wrongly combination WebMVC basics. If we hadn’t done this right away, anything will have focus on https://lovingwomen.org/es/blog/sitios-de-citas-noruegas/ far easier.
Our company is now carried out with the newest Springtime Data Other people migration. It is the right time to move on to the second Springtime component, Springtime Kafka.
Spring Kafka
Springtime Kafka, or rather Springtime getting Apache Kafka , is an excellent solution to fool around with Kafka in your Spring season projects. It offers effortless-to-use themes getting giving texts and you may normal Spring annotations to have sipping texts.
Configuring the fresh new consumers
step step one [ERROR] coffees.lang.IllegalStateException: Didn't stream ApplicationContext 2 step three Brought about by: org.springframework.kidney beans.warehouse.BeanCreationException: Mistake doing bean with title 'consumerFactory' defined in category highway financial support [ de / application / config / KafkaConsumerConfig . class ]: cuatro 5 Caused by: java . lang . NullPointerException 6 at java . legs / java . util . concurrent . ConcurrentHashMap . putVal ( ConcurrentHashMap . java: 1011 ) eight 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 having JsonFilter
1 [ERROR] org .apache .kafka mon .problems .SerializationException : Is 't serialize study [Experience [payload=MyClass(Id=201000000041600097, . ] to have matter [my-topic] 2 3 Because of: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Dont look after PropertyFilter that have id ‘myclassFilter' ; no FilterProvider set up (as a consequence of reference strings: de .test .Feel [ "payload" ] ) 4 during 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.
Instruction read updating Springtime Kafka
Classes learned while in the Spring season Footwear revision
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.