NEERAJ VAIDYA created KAFKA-12776: ------------------------------------- Summary: Producer sends messages out-of-order inspite of enabling idempotence Key: KAFKA-12776 URL: https://issues.apache.org/jira/browse/KAFKA-12776 Project: Kafka Issue Type: Bug Components: producer Affects Versions: 2.7.0, 2.6.0 Environment: Linux RHEL 7.9 and Ubuntu 20.04 Reporter: NEERAJ VAIDYA
I have an Apache Kafka 2.6 Producer which writes to topic-A (TA). I also have a Kafka streams application which consumes from TA and writes to topic-B (TB). In the streams application, I have a custom timestamp extractor which extracts the timestamp from the message payload. For one of my failure handling test cases, I shutdown the Kafka cluster while my applications are running. (Note : No messages have been published to the Kafka cluster before I stop the cluster) When the producer application tries to write messages to TA, it cannot because the cluster is down and hence (I assume) buffers the messages. Let's say it receives 4 messages m1,m2,m3,m4 in increasing time order. (i.e. m1 is first and m4 is last). When I bring the Kafka cluster back online, the producer sends the buffered messages to the topic, but they are not in order. I receive for example, m2 then m3 then m1 and then m4. Why is that ? Is it because the buffering in the producer is multi-threaded with each producing to the topic at the same time ? My application is basically a Spring boot web-application which accepts JSON payloads and then pushes them to a Kafka topic. I also use Spring Cloud Stream Kafka within it to create and use a Producer. My project code is attached herewith. -- This message was sent by Atlassian Jira (v8.3.4#803005)