Skip to content

Commit 19b3782

Browse files
committed
initial tiered storage integration attempt
1 parent 5d57ff8 commit 19b3782

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

psc/src/main/java/com/pinterest/psc/consumer/kafka/PscKafkaConsumer.java

+20-2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
import com.pinterest.psc.metrics.PscMetrics;
3030
import com.pinterest.psc.metrics.kafka.KafkaMetricsHandler;
3131
import com.pinterest.psc.metrics.kafka.KafkaUtils;
32+
33+
import org.apache.kafka.clients.consumer.Consumer;
3234
import org.apache.kafka.clients.consumer.ConsumerConfig;
3335
import org.apache.kafka.clients.consumer.ConsumerRecord;
3436
import org.apache.kafka.clients.consumer.ConsumerRecords;
@@ -40,6 +42,7 @@
4042
import org.apache.kafka.common.TopicPartition;
4143
import org.apache.kafka.common.serialization.ByteArrayDeserializer;
4244

45+
import java.lang.reflect.InvocationTargetException;
4346
import java.time.Duration;
4447
import java.util.Collection;
4548
import java.util.Collections;
@@ -56,7 +59,8 @@
5659

5760
public class PscKafkaConsumer<K, V> extends PscBackendConsumer<K, V> {
5861
private static final PscLogger logger = PscLogger.getLogger(PscKafkaConsumer.class);
59-
private KafkaConsumer<byte[], byte[]> kafkaConsumer;
62+
private static final String PSC_CONSUMER_KAFKA_CONSUMER_CLASS = "psc.consumer.kafka.consumer.class";
63+
private Consumer<byte[], byte[]> kafkaConsumer;
6064
private final Set<TopicUri> currentSubscription = new HashSet<>();
6165
private final Set<TopicUriPartition> currentAssignment = new HashSet<>();
6266
private long kafkaPollTimeoutMs;
@@ -85,7 +89,21 @@ public void initializeBackend(ServiceDiscoveryConfig discoveryConfig, TopicUri t
8589
pscConfigurationInternal.getPscConsumerClientId() + "-" + UUID.randomUUID()
8690
);
8791

88-
kafkaConsumer = new KafkaConsumer<>(properties);
92+
String kafkaConsumerClassName = pscConfigurationInternal.getConfiguration().getString(PSC_CONSUMER_KAFKA_CONSUMER_CLASS);
93+
try {
94+
Class<?> kafkaConsumerClass = Class.forName(kafkaConsumerClassName).asSubclass(
95+
Consumer.class);
96+
kafkaConsumer = (Consumer) kafkaConsumerClass.getDeclaredConstructor(Properties.class).newInstance(properties);
97+
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException |
98+
NoSuchMethodException | InvocationTargetException e) {
99+
if (e instanceof ClassNotFoundException) {
100+
logger.error("Consumer class not found: " + kafkaConsumerClassName, e);
101+
} else if (e instanceof InstantiationException) {
102+
logger.error("Could not instantiate consumer class: " + kafkaConsumerClassName, e);
103+
}
104+
logger.info("Defaulting to native KafkaConsumer class", e);
105+
kafkaConsumer = new KafkaConsumer<>(properties);
106+
}
89107
kafkaPollTimeoutMs = pscConfigurationInternal.getPscConsumerPollTimeoutMs();
90108

91109
// if using secure protocol (SSL), calculate cert expiry time

0 commit comments

Comments
 (0)