i'm building a POC that contains a Kafka cluster deployed on Kubernetes and three spring boot apps that read from kafka and write to jms and vice versa.
I want to know how data integrity and consistency is ensured for example: If a producer node failed how the consumer is going to continue reading the message without losing the msg consistency. Is there a detailed scenario to test this feature.
See the Spring for Apache Kafka documentation about transactions.
If you are new to Spring; also see Spring Framework's Transaction Support which Spring Kafka leverages.
Kafka cannot paritipate in a JTA (XA) transactions so your only option is to consider Best Efforts 1PC commits via Spring transaction synchronization and deal with the (small) possibility of redeliveries of messages that have previously been processed (after a failure).