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

org.openconnectors.PulsarSink Maven / Gradle / Ivy

The newest version!
package org.openconnectors;

import org.apache.pulsar.client.api.MessageId;
import org.apache.pulsar.client.api.Producer;
import org.apache.pulsar.client.api.PulsarClient;
import org.openconnectors.config.Config;
import org.openconnectors.connect.ConnectorContext;
import org.openconnectors.connect.SinkConnector;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Collection;
import java.util.concurrent.CompletableFuture;

import static org.openconnectors.config.ConfigUtils.verifyExists;

public class PulsarSink implements SinkConnector {
    private static final Logger LOG = LoggerFactory.getLogger(PulsarSink.class);

    PulsarClient client;
    Producer producer;
    CompletableFuture messageIdCompletableFuture = null;

    @Override
    public CompletableFuture publish(Collection messages) {

        for (byte[] message : messages) {
            messageIdCompletableFuture = producer.sendAsync(message);
        }
        return messageIdCompletableFuture.thenApply(x -> null);
    }

    @Override
    public void flush() throws Exception {
        if (messageIdCompletableFuture != null) {
            messageIdCompletableFuture.join();
        }

    }

    @Override
    public void initialize(ConnectorContext ctx) {

    }

    @Override
    public void open(Config config) throws Exception {
        verifyExists(config, PulsarConfigKeys.PULSAR_SINK_TOPIC);
        verifyExists(config, PulsarConfigKeys.PULSAR_SINK_BROKER_ROOT_URL);

        String pulsarBrokerRootUrl = config.getString(PulsarConfigKeys.PULSAR_SINK_BROKER_ROOT_URL);
        client = PulsarClient.create(pulsarBrokerRootUrl);
        String topic = config.getString(PulsarConfigKeys.PULSAR_SINK_TOPIC);

        producer = client.createProducer(topic);
    }

    @Override
    public void close() throws Exception {
        if (producer != null) {
            producer.close();
        }
        if (client != null) {
            client.close();
        }
    }

    @Override
    public String getVersion() {
        return PulsarConfigKeys.PULSAR_CONNECTOR_VERSION;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy