Package org.springframework.kafka.core
Interface KafkaOperations2<K,V>
-
- Type Parameters:
K- the key type.V- the value type.
public interface KafkaOperations2<K,V>The basic Kafka operations contract returningCompletableFutures.- Since:
- 2.9
- Author:
- Gary Russell
-
-
Field Summary
Fields Modifier and Type Field Description static java.time.DurationDEFAULT_POLL_TIMEOUTDefault timeout forreceive(String, int, long).
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description <T> Texecute(KafkaOperations.ProducerCallback<K,V,T> callback)Execute some arbitrary operation(s) on the producer and return the result.<T> TexecuteInTransaction(KafkaOperations.OperationsCallback<K,V,T> callback)Execute some arbitrary operation(s) on the operations and return the result.voidflush()Flush the producer.default ProducerFactory<K,V>getProducerFactory()Return the producer factory used by this template.default booleaninTransaction()Return true if the template is currently running in a transaction on the calling thread.default booleanisAllowNonTransactional()Return true if this template, when transactional, allows non-transactional operations.booleanisTransactional()Return true if the implementation supports transactions (has a transaction-capable producer factory).java.util.Map<org.apache.kafka.common.MetricName,? extends org.apache.kafka.common.Metric>metrics()SeeProducer.metrics().java.util.List<org.apache.kafka.common.PartitionInfo>partitionsFor(java.lang.String topic)SeeProducer.partitionsFor(String).default org.apache.kafka.clients.consumer.ConsumerRecord<K,V>receive(java.lang.String topic, int partition, long offset)Receive a single record with the default poll timeout (5 seconds).org.apache.kafka.clients.consumer.ConsumerRecord<K,V>receive(java.lang.String topic, int partition, long offset, java.time.Duration pollTimeout)Receive a single record.default org.apache.kafka.clients.consumer.ConsumerRecords<K,V>receive(java.util.Collection<TopicPartitionOffset> requested)Receive a multiple records with the default poll timeout (5 seconds).org.apache.kafka.clients.consumer.ConsumerRecords<K,V>receive(java.util.Collection<TopicPartitionOffset> requested, java.time.Duration pollTimeout)Receive multiple records.java.util.concurrent.CompletableFuture<SendResult<K,V>>send(java.lang.String topic, java.lang.Integer partition, java.lang.Long timestamp, K key, V data)Send the data to the provided topic with the provided key and partition.java.util.concurrent.CompletableFuture<SendResult<K,V>>send(java.lang.String topic, java.lang.Integer partition, K key, V data)Send the data to the provided topic with the provided key and partition.java.util.concurrent.CompletableFuture<SendResult<K,V>>send(java.lang.String topic, K key, V data)Send the data to the provided topic with the provided key and no partition.java.util.concurrent.CompletableFuture<SendResult<K,V>>send(java.lang.String topic, V data)Send the data to the provided topic with no key or partition.java.util.concurrent.CompletableFuture<SendResult<K,V>>send(org.apache.kafka.clients.producer.ProducerRecord<K,V> record)Send the providedProducerRecord.java.util.concurrent.CompletableFuture<SendResult<K,V>>send(org.springframework.messaging.Message<?> message)Send a message with routing information in message headers.java.util.concurrent.CompletableFuture<SendResult<K,V>>sendDefault(java.lang.Integer partition, java.lang.Long timestamp, K key, V data)Send the data to the default topic with the provided key and partition.java.util.concurrent.CompletableFuture<SendResult<K,V>>sendDefault(java.lang.Integer partition, K key, V data)Send the data to the default topic with the provided key and partition.java.util.concurrent.CompletableFuture<SendResult<K,V>>sendDefault(K key, V data)Send the data to the default topic with the provided key and no partition.java.util.concurrent.CompletableFuture<SendResult<K,V>>sendDefault(V data)Send the data to the default topic with no key or partition.default voidsendOffsetsToTransaction(java.util.Map<org.apache.kafka.common.TopicPartition,org.apache.kafka.clients.consumer.OffsetAndMetadata> offsets, org.apache.kafka.clients.consumer.ConsumerGroupMetadata groupMetadata)When running in a transaction, send the consumer offset(s) to the transaction.
-
-
-
Field Detail
-
DEFAULT_POLL_TIMEOUT
static final java.time.Duration DEFAULT_POLL_TIMEOUT
Default timeout forreceive(String, int, long).
-
-
Method Detail
-
sendDefault
java.util.concurrent.CompletableFuture<SendResult<K,V>> sendDefault(V data)
Send the data to the default topic with no key or partition.- Parameters:
data- The data.- Returns:
- a Future for the
SendResult.
-
sendDefault
java.util.concurrent.CompletableFuture<SendResult<K,V>> sendDefault(K key, V data)
Send the data to the default topic with the provided key and no partition.- Parameters:
key- the key.data- The data.- Returns:
- a Future for the
SendResult.
-
sendDefault
java.util.concurrent.CompletableFuture<SendResult<K,V>> sendDefault(java.lang.Integer partition, K key, V data)
Send the data to the default topic with the provided key and partition.- Parameters:
partition- the partition.key- the key.data- the data.- Returns:
- a Future for the
SendResult.
-
sendDefault
java.util.concurrent.CompletableFuture<SendResult<K,V>> sendDefault(java.lang.Integer partition, java.lang.Long timestamp, K key, V data)
Send the data to the default topic with the provided key and partition.- Parameters:
partition- the partition.timestamp- the timestamp of the record.key- the key.data- the data.- Returns:
- a Future for the
SendResult.
-
send
java.util.concurrent.CompletableFuture<SendResult<K,V>> send(java.lang.String topic, V data)
Send the data to the provided topic with no key or partition.- Parameters:
topic- the topic.data- The data.- Returns:
- a Future for the
SendResult.
-
send
java.util.concurrent.CompletableFuture<SendResult<K,V>> send(java.lang.String topic, K key, V data)
Send the data to the provided topic with the provided key and no partition.- Parameters:
topic- the topic.key- the key.data- The data.- Returns:
- a Future for the
SendResult.
-
send
java.util.concurrent.CompletableFuture<SendResult<K,V>> send(java.lang.String topic, java.lang.Integer partition, K key, V data)
Send the data to the provided topic with the provided key and partition.- Parameters:
topic- the topic.partition- the partition.key- the key.data- the data.- Returns:
- a Future for the
SendResult.
-
send
java.util.concurrent.CompletableFuture<SendResult<K,V>> send(java.lang.String topic, java.lang.Integer partition, java.lang.Long timestamp, K key, V data)
Send the data to the provided topic with the provided key and partition.- Parameters:
topic- the topic.partition- the partition.timestamp- the timestamp of the record.key- the key.data- the data.- Returns:
- a Future for the
SendResult.
-
send
java.util.concurrent.CompletableFuture<SendResult<K,V>> send(org.apache.kafka.clients.producer.ProducerRecord<K,V> record)
Send the providedProducerRecord.- Parameters:
record- the record.- Returns:
- a Future for the
SendResult.
-
send
java.util.concurrent.CompletableFuture<SendResult<K,V>> send(org.springframework.messaging.Message<?> message)
Send a message with routing information in message headers. The message payload may be converted before sending.- Parameters:
message- the message to send.- Returns:
- a Future for the
SendResult. - See Also:
KafkaHeaders.TOPIC,KafkaHeaders.PARTITION,KafkaHeaders.KEY
-
partitionsFor
java.util.List<org.apache.kafka.common.PartitionInfo> partitionsFor(java.lang.String topic)
SeeProducer.partitionsFor(String).- Parameters:
topic- the topic.- Returns:
- the partition info.
-
metrics
java.util.Map<org.apache.kafka.common.MetricName,? extends org.apache.kafka.common.Metric> metrics()
SeeProducer.metrics().- Returns:
- the metrics.
-
execute
@Nullable <T> T execute(KafkaOperations.ProducerCallback<K,V,T> callback)
Execute some arbitrary operation(s) on the producer and return the result.- Type Parameters:
T- the result type.- Parameters:
callback- the callback.- Returns:
- the result.
-
executeInTransaction
@Nullable <T> T executeInTransaction(KafkaOperations.OperationsCallback<K,V,T> callback)
Execute some arbitrary operation(s) on the operations and return the result. The operations are invoked within a local transaction and do not participate in a global transaction (if present).- Type Parameters:
T- the result type.- Parameters:
callback- the callback.- Returns:
- the result.
-
flush
void flush()
Flush the producer.
-
sendOffsetsToTransaction
default void sendOffsetsToTransaction(java.util.Map<org.apache.kafka.common.TopicPartition,org.apache.kafka.clients.consumer.OffsetAndMetadata> offsets, org.apache.kafka.clients.consumer.ConsumerGroupMetadata groupMetadata)When running in a transaction, send the consumer offset(s) to the transaction. It is not necessary to call this method if the operations are invoked on a listener container thread (and the listener container is configured with aKafkaAwareTransactionManager) since the container will take care of sending the offsets to the transaction. Use with 2.5 brokers or later.- Parameters:
offsets- The offsets.groupMetadata- the consumer group metadata.- See Also:
Producer.sendOffsetsToTransaction(Map, ConsumerGroupMetadata)
-
isTransactional
boolean isTransactional()
Return true if the implementation supports transactions (has a transaction-capable producer factory).- Returns:
- true or false.
-
isAllowNonTransactional
default boolean isAllowNonTransactional()
Return true if this template, when transactional, allows non-transactional operations.- Returns:
- true to allow.
-
inTransaction
default boolean inTransaction()
Return true if the template is currently running in a transaction on the calling thread.- Returns:
- true if a transaction is running.
-
getProducerFactory
default ProducerFactory<K,V> getProducerFactory()
Return the producer factory used by this template.- Returns:
- the factory.
-
receive
@Nullable default org.apache.kafka.clients.consumer.ConsumerRecord<K,V> receive(java.lang.String topic, int partition, long offset)
Receive a single record with the default poll timeout (5 seconds).- Parameters:
topic- the topic.partition- the partition.offset- the offset.- Returns:
- the record or null.
- See Also:
DEFAULT_POLL_TIMEOUT
-
receive
@Nullable org.apache.kafka.clients.consumer.ConsumerRecord<K,V> receive(java.lang.String topic, int partition, long offset, java.time.Duration pollTimeout)
Receive a single record.- Parameters:
topic- the topic.partition- the partition.offset- the offset.pollTimeout- the timeout.- Returns:
- the record or null.
-
receive
default org.apache.kafka.clients.consumer.ConsumerRecords<K,V> receive(java.util.Collection<TopicPartitionOffset> requested)
Receive a multiple records with the default poll timeout (5 seconds). Only absolute, positive offsets are supported.- Parameters:
requested- a collection of record requests (topic/partition/offset).- Returns:
- the records
- See Also:
DEFAULT_POLL_TIMEOUT
-
receive
org.apache.kafka.clients.consumer.ConsumerRecords<K,V> receive(java.util.Collection<TopicPartitionOffset> requested, java.time.Duration pollTimeout)
Receive multiple records. Only absolute, positive offsets are supported.- Parameters:
requested- a collection of record requests (topic/partition/offset).pollTimeout- the timeout.- Returns:
- the record or null.
-
-