
io.dropwizard.kafka.KafkaProducerBundle Maven / Gradle / Ivy
package io.dropwizard.kafka;
import brave.Tracing;
import io.dropwizard.Configuration;
import io.dropwizard.ConfiguredBundle;
import io.dropwizard.setup.Bootstrap;
import io.dropwizard.setup.Environment;
import org.apache.kafka.clients.producer.Producer;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
import javax.annotation.Nullable;
import static java.util.Objects.requireNonNull;
public abstract class KafkaProducerBundle implements ConfiguredBundle {
private final Collection topics;
private final Map configOverrides;
@Nullable
private Producer producer;
public KafkaProducerBundle(final Collection topics) {
this(topics, Collections.emptyMap());
}
public KafkaProducerBundle(final Collection topics,
final Map configOverrides) {
this.topics = requireNonNull(topics);
this.configOverrides = requireNonNull(configOverrides);
}
@Override
public void initialize(final Bootstrap> bootstrap) {
// do nothing
}
@Override
public void run(final T configuration, final Environment environment) throws Exception {
final KafkaProducerFactory kafkaProducerFactory = requireNonNull(getKafkaProducerFactory(configuration));
final Tracing tracing = Tracing.current();
this.producer = kafkaProducerFactory.build(environment.lifecycle(), environment.healthChecks(), topics, tracing, configOverrides);
}
public abstract KafkaProducerFactory getKafkaProducerFactory(T configuration);
public Producer getProducer() {
return requireNonNull(producer);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy