Class KafkaTopicProvisioner
- java.lang.Object
-
- org.springframework.cloud.stream.binder.kafka.provisioning.KafkaTopicProvisioner
-
- All Implemented Interfaces:
org.springframework.beans.factory.InitializingBean
,ProvisioningProvider<ExtendedConsumerProperties<KafkaConsumerProperties>,ExtendedProducerProperties<KafkaProducerProperties>>
public class KafkaTopicProvisioner extends Object implements ProvisioningProvider<ExtendedConsumerProperties<KafkaConsumerProperties>,ExtendedProducerProperties<KafkaProducerProperties>>, org.springframework.beans.factory.InitializingBean
Kafka implementation forProvisioningProvider
.- Author:
- Soby Chacko, Gary Russell, Ilayaperumal Gopinathan, Simon Flandergan, Oleg Zhurakousky, Aldo Sinanaj, Yi Liu, Omer Celik
-
-
Constructor Summary
Constructors Constructor Description KafkaTopicProvisioner(KafkaBinderConfigurationProperties kafkaBinderConfigurationProperties, org.springframework.boot.autoconfigure.kafka.KafkaProperties kafkaProperties, List<AdminClientConfigCustomizer> adminClientConfigCustomizers)
Create an instance.KafkaTopicProvisioner(KafkaBinderConfigurationProperties kafkaBinderConfigurationProperties, org.springframework.boot.autoconfigure.kafka.KafkaProperties kafkaProperties, AdminClientConfigCustomizer adminClientConfigCustomizer)
Create an instance.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
afterPropertiesSet()
Collection<org.apache.kafka.common.PartitionInfo>
getPartitionsForTopic(int partitionCount, boolean tolerateLowerPartitionsOnBroker, Callable<Collection<org.apache.kafka.common.PartitionInfo>> callable, String topicName)
Check that the topic has the expected number of partitions and return the partition information.static void
normalalizeBootPropsWithBinder(Map<String,Object> adminProps, org.springframework.boot.autoconfigure.kafka.KafkaProperties bootProps, KafkaBinderConfigurationProperties binderProps)
In general, binder properties supersede boot kafka properties.ConsumerDestination
provisionConsumerDestination(String name, String group, ExtendedConsumerProperties<KafkaConsumerProperties> properties)
ProducerDestination
provisionProducerDestination(String name, ExtendedProducerProperties<KafkaProducerProperties> properties)
void
setMetadataRetryOperations(org.springframework.retry.RetryOperations metadataRetryOperations)
Mutator for metadata retry operations.
-
-
-
Constructor Detail
-
KafkaTopicProvisioner
public KafkaTopicProvisioner(KafkaBinderConfigurationProperties kafkaBinderConfigurationProperties, org.springframework.boot.autoconfigure.kafka.KafkaProperties kafkaProperties, AdminClientConfigCustomizer adminClientConfigCustomizer)
Create an instance.- Parameters:
kafkaBinderConfigurationProperties
- the binder configuration properties.kafkaProperties
- the boot Kafka properties used to build theadminClientConfigCustomizer
- to customizeAdminClient
.AdminClient
.
-
KafkaTopicProvisioner
public KafkaTopicProvisioner(KafkaBinderConfigurationProperties kafkaBinderConfigurationProperties, org.springframework.boot.autoconfigure.kafka.KafkaProperties kafkaProperties, List<AdminClientConfigCustomizer> adminClientConfigCustomizers)
Create an instance.- Parameters:
kafkaBinderConfigurationProperties
- the binder configuration properties.kafkaProperties
- the boot Kafka properties used to build theadminClientConfigCustomizers
- to customizeAdminClient
.AdminClient
.
-
-
Method Detail
-
setMetadataRetryOperations
public void setMetadataRetryOperations(org.springframework.retry.RetryOperations metadataRetryOperations)
Mutator for metadata retry operations.- Parameters:
metadataRetryOperations
- the retry configuration
-
afterPropertiesSet
public void afterPropertiesSet()
- Specified by:
afterPropertiesSet
in interfaceorg.springframework.beans.factory.InitializingBean
-
provisionProducerDestination
public ProducerDestination provisionProducerDestination(String name, ExtendedProducerProperties<KafkaProducerProperties> properties)
-
provisionConsumerDestination
public ConsumerDestination provisionConsumerDestination(String name, String group, ExtendedConsumerProperties<KafkaConsumerProperties> properties)
-
normalalizeBootPropsWithBinder
public static void normalalizeBootPropsWithBinder(Map<String,Object> adminProps, org.springframework.boot.autoconfigure.kafka.KafkaProperties bootProps, KafkaBinderConfigurationProperties binderProps)
In general, binder properties supersede boot kafka properties. The one exception is the bootstrap servers. In that case, we should only override the boot properties if (there is a binder property AND it is a non-default value) OR (if there is no boot property); this is needed because the binder property never returns a null value.- Parameters:
adminProps
- the admin properties to normalize.bootProps
- the boot kafka properties.binderProps
- the binder kafka properties.
-
getPartitionsForTopic
public Collection<org.apache.kafka.common.PartitionInfo> getPartitionsForTopic(int partitionCount, boolean tolerateLowerPartitionsOnBroker, Callable<Collection<org.apache.kafka.common.PartitionInfo>> callable, String topicName)
Check that the topic has the expected number of partitions and return the partition information.- Parameters:
partitionCount
- the expected count.tolerateLowerPartitionsOnBroker
- if false, throw an exception if there are not enough partitions.callable
- a Callable that will provide the partition information.topicName
- the topic./- Returns:
- the partition information.
-
-