配置Spring - Kafka为许多集群Kafka?最佳解决方案是什么?



我看到有人复制代码为每个集群配置kafka:(

真的有必要每次都用不同的设置配置消费者工厂和生产者工厂吗?不要以任何方式使用Spring Boot Kafka starter ?

如果您为每个集群使用类似的属性,您可以为每个@KafkaListener覆盖bootstrap.servers属性和/或使用相同的覆盖创建多个@KafkaTemplate

然后,可以使用相同的工厂。

看到https://docs.spring.io/spring-kafka/docs/current/reference/html/annotation-properties

@KafkaListener(topics = "myTopic", groupId = "group", properties = {
"max.poll.interval.ms:60000",
ConsumerConfig.MAX_POLL_RECORDS_CONFIG + "=100"
})
/**
* Create an instance using the supplied producer factory and properties, with
* autoFlush false. If the configOverrides is not null or empty, a new
* {@link DefaultKafkaProducerFactory} will be created with merged producer properties
* with the overrides being applied after the supplied factory's properties.
* @param producerFactory the producer factory.
* @param configOverrides producer configuration properties to override.
* @since 2.5
*/
public KafkaTemplate(ProducerFactory<K, V> producerFactory, @Nullable Map<String, Object> configOverrides) {

Spring Boot自动配置是为常见的微服务用例约定的:一件事,但简单明了。

您所要求的是超出Spring Boot范围:属性配置仅适用于一个ConsumerFactory和一个ProducerFactory。只要您需要连接到不同的集群,您就可以自己操作。使用自定义ConsumerFactorybean将导致Spring Boot自动配置退出。

您可能可以查看具有自己提供的一组属性的子ApplicationContext配置。但是,仅仅为每个集群配置自定义配置是否会像不使用Spring Boot而只使用普通的Apache Kafka客户端那样容易呢?

我不知道是否有一些联邦解决方案的Apache Kafka。但这仍然超出了Apache Kafka和Spring Boot的范围。

最新更新