Class DefaultShareConsumerFactory<K,V>
java.lang.Object
org.springframework.kafka.core.KafkaResourceFactory
org.springframework.kafka.core.DefaultShareConsumerFactory<K,V>
- Type Parameters:
K- the key type.V- the value type.
- All Implemented Interfaces:
Aware,BeanNameAware,ShareConsumerFactory<K,V>
public class DefaultShareConsumerFactory<K,V>
extends KafkaResourceFactory
implements ShareConsumerFactory<K,V>, BeanNameAware
The
ShareConsumerFactory implementation to produce new ShareConsumer instances
for provided Map configs and optional Deserializers on each
createShareConsumer(String, String) invocation.
If you are using Deserializers that have no-arg constructors and require no setup, then simplest to
specify Deserializer classes in the configs passed to the
DefaultShareConsumerFactory constructor.
If that is not possible, but you are using Deserializers that may be shared between all ShareConsumer
instances (and specifically that their close() method is a no-op), then you can pass in Deserializer
instances for one or both of the key and value deserializers.
If neither of the above is true then you may provide a Supplier for one or both Deserializers
which will be used to obtain Deserializer(s) each time a ShareConsumer is created by the factory.
- Since:
- 4.0
- Author:
- Soby Chacko
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected classNested classes/interfaces inherited from interface org.springframework.kafka.core.ShareConsumerFactory
ShareConsumerFactory.Listener<K,V> -
Constructor Summary
ConstructorsConstructorDescriptionDefaultShareConsumerFactory(Map<String, Object> configs) Construct a factory with the provided configuration.DefaultShareConsumerFactory(Map<String, Object> configs, @Nullable Supplier<@Nullable org.apache.kafka.common.serialization.Deserializer<K>> keyDeserializerSupplier, @Nullable Supplier<@Nullable org.apache.kafka.common.serialization.Deserializer<V>> valueDeserializerSupplier) Construct a factory with the provided configuration and deserializer suppliers.DefaultShareConsumerFactory(Map<String, Object> configs, @Nullable Supplier<@Nullable org.apache.kafka.common.serialization.Deserializer<K>> keyDeserializerSupplier, @Nullable Supplier<@Nullable org.apache.kafka.common.serialization.Deserializer<V>> valueDeserializerSupplier, boolean configureDeserializers) Construct a factory with the provided configuration, deserializer suppliers, and deserializer config flag.DefaultShareConsumerFactory(Map<String, Object> configs, @Nullable org.apache.kafka.common.serialization.Deserializer<K> keyDeserializer, @Nullable org.apache.kafka.common.serialization.Deserializer<V> valueDeserializer, boolean configureDeserializers) Construct a factory with the provided configuration and deserializers. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddListener(int index, ShareConsumerFactory.Listener<K, V> listener) Add a listener at a specific index.voidaddListener(ShareConsumerFactory.Listener<K, V> listener) Add a listener.createRawConsumer(@Nullable String groupId, @Nullable String clientId) Actually create the consumer.createShareConsumer(@Nullable String groupId, @Nullable String clientId) Create a share consumer with the provided group id and client id.Return an unmodifiable reference to the configuration map for this factory.@Nullable org.apache.kafka.common.serialization.Deserializer<K> Return the configured key deserializer (if provided as an object instead of a class name in the properties).Get the current list of listeners.@Nullable org.apache.kafka.common.serialization.Deserializer<V> Return the configured value deserializer (if provided as an object instead of a class name in the properties).booleanremoveListener(ShareConsumerFactory.Listener<K, V> listener) Remove a listener.voidsetBeanName(String name) voidsetConfigureDeserializers(boolean configureDeserializers) Set to false (default true) to prevent programmatically provided deserializers (via constructor or setters) from being configured using the consumer configuration, e.g.voidsetKeyDeserializer(@Nullable org.apache.kafka.common.serialization.Deserializer<K> keyDeserializer) Set the key deserializer.voidsetKeyDeserializerSupplier(@Nullable Supplier<@Nullable org.apache.kafka.common.serialization.Deserializer<K>> keyDeserializerSupplier) Set a supplier to supply instances of the key deserializer.voidsetValueDeserializer(@Nullable org.apache.kafka.common.serialization.Deserializer<V> valueDeserializer) Set the value deserializer.voidsetValueDeserializerSupplier(@Nullable Supplier<@Nullable org.apache.kafka.common.serialization.Deserializer<V>> valueDeserializerSupplier) Set a supplier to supply instances of the value deserializer.Methods inherited from class org.springframework.kafka.core.KafkaResourceFactory
checkBootstrap, getBootstrapServers, setBootstrapServersSupplier
-
Constructor Details
-
DefaultShareConsumerFactory
-
DefaultShareConsumerFactory
public DefaultShareConsumerFactory(Map<String, Object> configs, @Nullable Supplier<@Nullable org.apache.kafka.common.serialization.Deserializer<K>> keyDeserializerSupplier, @Nullable Supplier<@Nullable org.apache.kafka.common.serialization.Deserializer<V>> valueDeserializerSupplier) Construct a factory with the provided configuration and deserializer suppliers. When the suppliers are invoked to get an instance, the deserializers'configure()methods will be called with the configuration map.- Parameters:
configs- the configuration.keyDeserializerSupplier- the keyDeserializersupplier function (nullable).valueDeserializerSupplier- the valueDeserializersupplier function (nullable).
-
DefaultShareConsumerFactory
public DefaultShareConsumerFactory(Map<String, Object> configs, @Nullable org.apache.kafka.common.serialization.Deserializer<K> keyDeserializer, @Nullable org.apache.kafka.common.serialization.Deserializer<V> valueDeserializer, boolean configureDeserializers) Construct a factory with the provided configuration and deserializers. The deserializers'configure()methods will be called with the configuration map unlessconfigureDeserializersis false.- Parameters:
configs- the configuration.keyDeserializer- the keyDeserializer.valueDeserializer- the valueDeserializer.configureDeserializers- false to not configure the deserializers.
-
DefaultShareConsumerFactory
public DefaultShareConsumerFactory(Map<String, Object> configs, @Nullable Supplier<@Nullable org.apache.kafka.common.serialization.Deserializer<K>> keyDeserializerSupplier, @Nullable Supplier<@Nullable org.apache.kafka.common.serialization.Deserializer<V>> valueDeserializerSupplier, boolean configureDeserializers) Construct a factory with the provided configuration, deserializer suppliers, and deserializer config flag. When the suppliers are invoked to get an instance, the deserializers'configure()methods will be called with the configuration map unlessconfigureDeserializersis false.- Parameters:
configs- the configuration.keyDeserializerSupplier- the keyDeserializersupplier function (nullable).valueDeserializerSupplier- the valueDeserializersupplier function (nullable).configureDeserializers- whether to configure deserializers.
-
-
Method Details
-
createRawConsumer
-
setBeanName
- Specified by:
setBeanNamein interfaceBeanNameAware
-
setKeyDeserializer
public void setKeyDeserializer(@Nullable org.apache.kafka.common.serialization.Deserializer<K> keyDeserializer) Set the key deserializer. The deserializer will be configured using the consumer configuration, unlessconfigureDeserializersis false.- Parameters:
keyDeserializer- the deserializer.
-
setValueDeserializer
public void setValueDeserializer(@Nullable org.apache.kafka.common.serialization.Deserializer<V> valueDeserializer) Set the value deserializer. The deserializer will be configured using the consumer configuration, unlessconfigureDeserializersis false.- Parameters:
valueDeserializer- the value deserializer.
-
getKeyDeserializer
Description copied from interface:ShareConsumerFactoryReturn the configured key deserializer (if provided as an object instead of a class name in the properties).- Specified by:
getKeyDeserializerin interfaceShareConsumerFactory<K,V> - Returns:
- the deserializer.
-
getValueDeserializer
Description copied from interface:ShareConsumerFactoryReturn the configured value deserializer (if provided as an object instead of a class name in the properties).- Specified by:
getValueDeserializerin interfaceShareConsumerFactory<K,V> - Returns:
- the deserializer.
-
setKeyDeserializerSupplier
public void setKeyDeserializerSupplier(@Nullable Supplier<@Nullable org.apache.kafka.common.serialization.Deserializer<K>> keyDeserializerSupplier) Set a supplier to supply instances of the key deserializer. The deserializer will be configured using the consumer configuration, unlessconfigureDeserializersis false.- Parameters:
keyDeserializerSupplier- the supplier (nullable).
-
setValueDeserializerSupplier
public void setValueDeserializerSupplier(@Nullable Supplier<@Nullable org.apache.kafka.common.serialization.Deserializer<V>> valueDeserializerSupplier) Set a supplier to supply instances of the value deserializer. The deserializer will be configured using the consumer configuration, unlessconfigureDeserializersis false.- Parameters:
valueDeserializerSupplier- the supplier (nullable).
-
setConfigureDeserializers
public void setConfigureDeserializers(boolean configureDeserializers) Set to false (default true) to prevent programmatically provided deserializers (via constructor or setters) from being configured using the consumer configuration, e.g. if the deserializers are already fully configured.- Parameters:
configureDeserializers- false to not configure.- See Also:
-
getListeners
Get the current list of listeners.- Specified by:
getListenersin interfaceShareConsumerFactory<K,V> - Returns:
- the listeners.
-
getConfigurationProperties
Description copied from interface:ShareConsumerFactoryReturn an unmodifiable reference to the configuration map for this factory. Useful for cloning to make a similar factory.- Specified by:
getConfigurationPropertiesin interfaceShareConsumerFactory<K,V> - Returns:
- the configs.