Package org.springframework.kafka.core
Interface ProducerFactory<K,V>
-
- Type Parameters:
K
- the key type.V
- the value type.
- All Known Implementing Classes:
DefaultKafkaProducerFactory
public interface ProducerFactory<K,V>
The strategy to produce aProducer
instance(s).
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static interface
ProducerFactory.Listener<K,V>
Called whenever a producer is added or removed.
-
Field Summary
Fields Modifier and Type Field Description static java.time.Duration
DEFAULT_PHYSICAL_CLOSE_TIMEOUT
The default close timeout duration as 30 seconds.
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description default void
addListener(int index, ProducerFactory.Listener<K,V> listener)
Add a listener at a specific index.default void
addListener(ProducerFactory.Listener<K,V> listener)
Add a listener.default void
addPostProcessor(ProducerPostProcessor<K,V> postProcessor)
Add a post processor.default void
closeProducerFor(java.lang.String transactionIdSuffix)
Remove the specified producer from the cache and close it.default void
closeThreadBoundProducer()
If the factory implementation uses thread-bound producers, call this method to close and release this thread's producer.default ProducerFactory<K,V>
copyWithConfigurationOverride(java.util.Map<java.lang.String,java.lang.Object> overrideProperties)
Copy the properties of the instance and the given properties to create a new producer factory.default org.apache.kafka.clients.producer.Producer<K,V>
createNonTransactionalProducer()
Create a non-transactional producer.org.apache.kafka.clients.producer.Producer<K,V>
createProducer()
Create a producer which will be transactional if the factory is so configured.default org.apache.kafka.clients.producer.Producer<K,V>
createProducer(java.lang.String txIdPrefix)
Create a producer with an overridden transaction id prefix.default java.util.Map<java.lang.String,java.lang.Object>
getConfigurationProperties()
Return an unmodifiable reference to the configuration map for this factory.default org.apache.kafka.common.serialization.Serializer<K>
getKeySerializer()
Return the configured key serializer (if provided as an object instead of a class name in the properties).default java.util.function.Supplier<org.apache.kafka.common.serialization.Serializer<K>>
getKeySerializerSupplier()
Return a supplier for a key serializer.default java.util.List<ProducerFactory.Listener<K,V>>
getListeners()
Get the current list of listeners.default java.time.Duration
getPhysicalCloseTimeout()
Get the physical close timeout.default java.util.List<ProducerPostProcessor<K,V>>
getPostProcessors()
Get the current list of post processors.default java.lang.String
getTransactionIdPrefix()
Return the transaction id prefix.default org.apache.kafka.common.serialization.Serializer<V>
getValueSerializer()
Return the configured value serializer (if provided as an object instead of a class name in the properties).default java.util.function.Supplier<org.apache.kafka.common.serialization.Serializer<V>>
getValueSerializerSupplier()
Return a supplier for a value serializer.default boolean
isProducerPerConsumerPartition()
Return the producerPerConsumerPartition.default boolean
isProducerPerThread()
Return true when there is a producer per thread.default void
removeConfig(java.lang.String configKey)
Remove the specified key from the configuration map.default boolean
removeListener(ProducerFactory.Listener<K,V> listener)
Remove a listener.default boolean
removePostProcessor(ProducerPostProcessor<K,V> postProcessor)
Remove a post processor.default void
reset()
Reset any state in the factory, if supported.default boolean
transactionCapable()
Return true if the factory supports transactions.default void
updateConfigs(java.util.Map<java.lang.String,java.lang.Object> updates)
Update the producer configuration map; useful for situations such as credential rotation.
-
-
-
Method Detail
-
createProducer
org.apache.kafka.clients.producer.Producer<K,V> createProducer()
Create a producer which will be transactional if the factory is so configured.- Returns:
- the producer.
- See Also:
transactionCapable()
-
createProducer
default org.apache.kafka.clients.producer.Producer<K,V> createProducer(@Nullable java.lang.String txIdPrefix)
Create a producer with an overridden transaction id prefix.- Parameters:
txIdPrefix
- the transaction id prefix.- Returns:
- the producer.
- Since:
- 2.3
-
createNonTransactionalProducer
default org.apache.kafka.clients.producer.Producer<K,V> createNonTransactionalProducer()
Create a non-transactional producer.- Returns:
- the producer.
- Since:
- 2.4.3
- See Also:
transactionCapable()
-
transactionCapable
default boolean transactionCapable()
Return true if the factory supports transactions.- Returns:
- true if transactional.
-
closeProducerFor
default void closeProducerFor(java.lang.String transactionIdSuffix)
Remove the specified producer from the cache and close it.- Parameters:
transactionIdSuffix
- the producer's transaction id suffix.- Since:
- 1.3.8
-
isProducerPerConsumerPartition
default boolean isProducerPerConsumerPartition()
Return the producerPerConsumerPartition.- Returns:
- the producerPerConsumerPartition.
- Since:
- 1.3.8
-
closeThreadBoundProducer
default void closeThreadBoundProducer()
If the factory implementation uses thread-bound producers, call this method to close and release this thread's producer.- Since:
- 2.3
-
reset
default void reset()
Reset any state in the factory, if supported.- Since:
- 2.4
-
getConfigurationProperties
default java.util.Map<java.lang.String,java.lang.Object> getConfigurationProperties()
Return an unmodifiable reference to the configuration map for this factory. Useful for cloning to make a similar factory.- Returns:
- the configs.
- Since:
- 2.5
-
getValueSerializerSupplier
default java.util.function.Supplier<org.apache.kafka.common.serialization.Serializer<V>> getValueSerializerSupplier()
Return a supplier for a value serializer. Useful for cloning to make a similar factory.- Returns:
- the supplier.
- Since:
- 2.5
-
getKeySerializerSupplier
default java.util.function.Supplier<org.apache.kafka.common.serialization.Serializer<K>> getKeySerializerSupplier()
Return a supplier for a key serializer. Useful for cloning to make a similar factory.- Returns:
- the supplier.
- Since:
- 2.5
-
isProducerPerThread
default boolean isProducerPerThread()
Return true when there is a producer per thread.- Returns:
- the producer per thread.
- Since:
- 2.5
-
getTransactionIdPrefix
@Nullable default java.lang.String getTransactionIdPrefix()
Return the transaction id prefix.- Returns:
- the prefix or null if not configured.
- Since:
- 2.5
-
getPhysicalCloseTimeout
default java.time.Duration getPhysicalCloseTimeout()
Get the physical close timeout.- Returns:
- the timeout.
- Since:
- 2.5
-
addListener
default void addListener(ProducerFactory.Listener<K,V> listener)
Add a listener.- Parameters:
listener
- the listener.- Since:
- 2.5.3
-
addListener
default void addListener(int index, ProducerFactory.Listener<K,V> listener)
Add a listener at a specific index.- Parameters:
index
- the index (list position).listener
- the listener.- Since:
- 2.5.3
-
removeListener
default boolean removeListener(ProducerFactory.Listener<K,V> listener)
Remove a listener.- Parameters:
listener
- the listener.- Returns:
- true if removed.
- Since:
- 2.5.3
-
getListeners
default java.util.List<ProducerFactory.Listener<K,V>> getListeners()
Get the current list of listeners.- Returns:
- the listeners.
- Since:
- 2.5.3
-
addPostProcessor
default void addPostProcessor(ProducerPostProcessor<K,V> postProcessor)
Add a post processor.- Parameters:
postProcessor
- the post processor.- Since:
- 2.5.3
-
removePostProcessor
default boolean removePostProcessor(ProducerPostProcessor<K,V> postProcessor)
Remove a post processor.- Parameters:
postProcessor
- the post processor.- Returns:
- true if removed.
- Since:
- 2.5.3
-
getPostProcessors
default java.util.List<ProducerPostProcessor<K,V>> getPostProcessors()
Get the current list of post processors.- Returns:
- the post processors.
- Since:
- 2.5.3
-
updateConfigs
default void updateConfigs(java.util.Map<java.lang.String,java.lang.Object> updates)
Update the producer configuration map; useful for situations such as credential rotation.- Parameters:
updates
- the configuration properties to update.- Since:
- 2.5.10
-
removeConfig
default void removeConfig(java.lang.String configKey)
Remove the specified key from the configuration map.- Parameters:
configKey
- the key to remove.- Since:
- 2.5.10
-
getKeySerializer
@Nullable default org.apache.kafka.common.serialization.Serializer<K> getKeySerializer()
Return the configured key serializer (if provided as an object instead of a class name in the properties).- Returns:
- the serializer.
- Since:
- 2.8
-
getValueSerializer
@Nullable default org.apache.kafka.common.serialization.Serializer<V> getValueSerializer()
Return the configured value serializer (if provided as an object instead of a class name in the properties).- Returns:
- the serializer.
- Since:
- 2.8
-
copyWithConfigurationOverride
default ProducerFactory<K,V> copyWithConfigurationOverride(java.util.Map<java.lang.String,java.lang.Object> overrideProperties)
Copy the properties of the instance and the given properties to create a new producer factory.The copy shall prioritize the override properties over the configured values. It is in the responsibility of the factory implementation to make sure the configuration of the new factory is identical, complete and correct.
ProducerPostProcessor and Listeners must stay intact.
If the factory does not implement this method, an exception will be thrown.
- Parameters:
overrideProperties
- the properties to be applied to the new factory- Returns:
ProducerFactory
with properties applied- Since:
- 2.5.17
- See Also:
KafkaTemplate(ProducerFactory, java.util.Map)
-
-