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

io.smallrye.reactive.messaging.kafka.ReceivedKafkaMessage Maven / Gradle / Ivy

There is a newer version: 4.25.0
Show newest version
package io.smallrye.reactive.messaging.kafka;

import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;
import java.util.function.Supplier;

import org.apache.kafka.clients.consumer.ConsumerRecord;

import io.vertx.reactivex.kafka.client.consumer.KafkaConsumer;
import io.vertx.reactivex.kafka.client.consumer.KafkaConsumerRecord;

public class ReceivedKafkaMessage implements KafkaMessage {

    private final KafkaConsumerRecord record;
    private final KafkaConsumer consumer;
    private final MessageHeaders headers;

    public ReceivedKafkaMessage(KafkaConsumer consumer, KafkaConsumerRecord record) {
        this.record = Objects.requireNonNull(record);
        this.consumer = Objects.requireNonNull(consumer);
        this.headers = new MessageHeaders(record.getDelegate().record().headers());
    }

    @Override
    public T getPayload() {
        return record.value();
    }

    public K getKey() {
        return record.key();
    }

    public String getTopic() {
        return record.topic();
    }

    public Integer getPartition() {
        return record.partition();
    }

    @Override
    public Long getTimestamp() {
        return record.timestamp();
    }

    @Override
    public MessageHeaders getHeaders() {
        return headers;
    }

    @Override
    public Supplier> getAckSupplier() {
        return this::ack;
    }

    public ConsumerRecord unwrap() {
        return record.getDelegate().record();
    }

    @Override
    public CompletionStage ack() {
        consumer.commit();
        return CompletableFuture.completedFuture(null);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy