All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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