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, setTransactionIdPrefix
public 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()
KafkaTemplate
getProducerFactory
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)
KafkaTemplate
getProducerFactory
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)
KafkaOperations
execute
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)
KafkaOperations
executeInTransaction
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)
KafkaOperations
KafkaAwareTransactionManager
) 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()
KafkaOperations
Producer.metrics()
.metrics
in interface KafkaOperations<java.lang.Object,java.lang.Object>
metrics
in class KafkaTemplate<java.lang.Object,java.lang.Object>
public void flush()
KafkaTemplate
Note 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>