Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,10 @@
import okhttp3.Request;
import okhttp3.Response;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.clients.consumer.ConsumerRebalanceListener;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.common.TopicPartition;
import org.apache.kafka.common.serialization.Deserializer;
import org.apache.kafka.common.serialization.StringDeserializer;
import org.apache.kafka.common.serialization.StringSerializer;
Expand All @@ -43,6 +45,7 @@

import javax.annotation.PostConstruct;
import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
Expand All @@ -61,6 +64,7 @@ public class CaseController {

private CountDownLatch latch = new CountDownLatch(1);
private String helloWorld = "helloWorld";
private volatile boolean partitionsAssigned = false;

@PostConstruct
private void setUp() {
Expand Down Expand Up @@ -91,6 +95,19 @@ private void setUpConsumer() {
Deserializer<String> stringDeserializer = new StringDeserializer();
DefaultKafkaConsumerFactory<String, String> factory = new DefaultKafkaConsumerFactory(configs, stringDeserializer, stringDeserializer);
ContainerProperties props = new ContainerProperties(topicName);
// The consumer starts from the latest offset, so the case must not send before partitions are assigned.
props.setConsumerRebalanceListener(new ConsumerRebalanceListener() {
@Override
public void onPartitionsRevoked(Collection<TopicPartition> partitions) {
}

@Override
public void onPartitionsAssigned(Collection<TopicPartition> partitions) {
if (!partitions.isEmpty()) {
partitionsAssigned = true;
}
}
});
props.setMessageListener(new AcknowledgingMessageListener<String, String>() {
@Override
public void onMessage(ConsumerRecord<String, String> data, Acknowledgment acknowledgment) {
Expand Down Expand Up @@ -131,7 +148,10 @@ public String springKafkaConsumerPing() {
@RequestMapping("/healthCheck")
@ResponseBody
public String healthCheck() {
return SUCCESS;
if (partitionsAssigned) {
return SUCCESS;
}
throw new RuntimeException("kafka consumer partitions not assigned");
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,10 @@
import okhttp3.Request;
import okhttp3.Response;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.clients.consumer.ConsumerRebalanceListener;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.common.TopicPartition;
import org.apache.kafka.common.serialization.Deserializer;
import org.apache.kafka.common.serialization.StringDeserializer;
import org.apache.kafka.common.serialization.StringSerializer;
Expand All @@ -42,6 +44,7 @@

import javax.annotation.PostConstruct;
import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
Expand All @@ -60,6 +63,7 @@ public class CaseController {

private CountDownLatch latch = new CountDownLatch(1);
private String helloWorld = "helloWorld";
private volatile boolean partitionsAssigned = false;

@PostConstruct
private void setUp() {
Expand Down Expand Up @@ -90,6 +94,19 @@ private void setUpConsumer() {
Deserializer<String> stringDeserializer = new StringDeserializer();
DefaultKafkaConsumerFactory<String, String> factory = new DefaultKafkaConsumerFactory(configs, stringDeserializer, stringDeserializer);
ContainerProperties props = new ContainerProperties(topicName);
// The consumer starts from the latest offset, so the case must not send before partitions are assigned.
props.setConsumerRebalanceListener(new ConsumerRebalanceListener() {
@Override
public void onPartitionsRevoked(Collection<TopicPartition> partitions) {
}

@Override
public void onPartitionsAssigned(Collection<TopicPartition> partitions) {
if (!partitions.isEmpty()) {
partitionsAssigned = true;
}
}
});
props.setMessageListener(new AcknowledgingMessageListener<String, String>() {
@Override
public void onMessage(ConsumerRecord<String, String> data, Acknowledgment acknowledgment) {
Expand Down Expand Up @@ -130,7 +147,10 @@ public String springKafkaConsumerPing() {
@RequestMapping("/healthCheck")
@ResponseBody
public String healthCheck() {
return SUCCESS;
if (partitionsAssigned) {
return SUCCESS;
}
throw new RuntimeException("kafka consumer partitions not assigned");
}
}

Loading