public class RoutingKafkaTemplate extends KafkaTemplate<java.lang.Object,java.lang.Object>
KafkaTemplate that routes messages based on the topic name. Does not support
transactions, flush(), metrics(), and
execute(org.springframework.kafka.core.KafkaOperations.ProducerCallback),
only simple send operations.KafkaOperations.OperationsCallback<K,V,T>, KafkaOperations.ProducerCallback<K,V,T>logger| Constructor and Description |
|---|
RoutingKafkaTemplate(java.util.Map<java.util.regex.Pattern,ProducerFactory<java.lang.Object,java.lang.Object>> factories)
Construct an instance with the provided properties.
|
| Modifier and Type | Method and Description |
|---|---|
<T> T |
execute(KafkaOperations.ProducerCallback<java.lang.Object,java.lang.Object,T> callback)
Execute some arbitrary operation(s) on the producer and return the result.
|
<T> T |
executeInTransaction(KafkaOperations.OperationsCallback<java.lang.Object,java.lang.Object,T> callback)
Execute some arbitrary operation(s) on the operations and return the result.
|
void |
flush()
Flush the producer.
|
ProducerFactory<java.lang.Object,java.lang.Object> |
getProducerFactory()
Return the producer factory used by this template.
|
ProducerFactory<java.lang.Object,java.lang.Object> |
getProducerFactory(java.lang.String topic)
Return the producer factory used by this template based on the topic.
|
java.util.Map<org.apache.kafka.common.MetricName,? extends org.apache.kafka.common.Metric> |
metrics()
See
Producer.metrics(). |
void |
sendOffsetsToTransaction(java.util.Map<org.apache.kafka.common.TopicPartition,org.apache.kafka.clients.consumer.OffsetAndMetadata> offsets,
java.lang.String consumerGroupId)
When running in a transaction, send the consumer offset(s) to the transaction.
|
closeProducer, destroy, doSend, getDefaultTopic, getMessageConverter, getTheProducer, getTransactionIdPrefix, inTransaction, isAllowNonTransactional, isTransactional, onApplicationEvent, partitionsFor, send, send, send, send, send, send, sendDefault, sendDefault, sendDefault, sendDefault, sendOffsetsToTransaction, sendOffsetsToTransaction, setAllowNonTransactional, setApplicationContext, setBeanName, setCloseTimeout, setDefaultTopic, setMessageConverter, setMicrometerEnabled, setMicrometerTags, setProducerListener, setTransactionIdPrefixpublic RoutingKafkaTemplate(java.util.Map<java.util.regex.Pattern,ProducerFactory<java.lang.Object,java.lang.Object>> factories)
LinkedHashMap should be used
with more specific patterns declared first.factories - the factories.public ProducerFactory<java.lang.Object,java.lang.Object> getProducerFactory()
KafkaTemplategetProducerFactory in interface KafkaOperations<java.lang.Object,java.lang.Object>getProducerFactory in class KafkaTemplate<java.lang.Object,java.lang.Object>public ProducerFactory<java.lang.Object,java.lang.Object> getProducerFactory(java.lang.String topic)
KafkaTemplategetProducerFactory in class KafkaTemplate<java.lang.Object,java.lang.Object>topic - the topic.public <T> T execute(KafkaOperations.ProducerCallback<java.lang.Object,java.lang.Object,T> callback)
KafkaOperationsexecute in interface KafkaOperations<java.lang.Object,java.lang.Object>execute in class KafkaTemplate<java.lang.Object,java.lang.Object>T - the result type.callback - the callback.public <T> T executeInTransaction(KafkaOperations.OperationsCallback<java.lang.Object,java.lang.Object,T> callback)
KafkaOperationsexecuteInTransaction in interface KafkaOperations<java.lang.Object,java.lang.Object>executeInTransaction in class KafkaTemplate<java.lang.Object,java.lang.Object>T - the result type.callback - the callback.public void sendOffsetsToTransaction(java.util.Map<org.apache.kafka.common.TopicPartition,org.apache.kafka.clients.consumer.OffsetAndMetadata> offsets,
java.lang.String consumerGroupId)
KafkaOperationsKafkaAwareTransactionManager) since
the container will take care of sending the offsets to the transaction.sendOffsetsToTransaction in interface KafkaOperations<java.lang.Object,java.lang.Object>sendOffsetsToTransaction in class KafkaTemplate<java.lang.Object,java.lang.Object>offsets - The offsets.consumerGroupId - the consumer's group.id.public java.util.Map<org.apache.kafka.common.MetricName,? extends org.apache.kafka.common.Metric> metrics()
KafkaOperationsProducer.metrics().metrics in interface KafkaOperations<java.lang.Object,java.lang.Object>metrics in class KafkaTemplate<java.lang.Object,java.lang.Object>public void flush()
KafkaTemplateNote It only makes sense to invoke this method if the
ProducerFactory serves up a singleton producer (such as the
DefaultKafkaProducerFactory).
flush in interface KafkaOperations<java.lang.Object,java.lang.Object>flush in class KafkaTemplate<java.lang.Object,java.lang.Object>