【问题标题】:Spring Kafka Configuration for 2 different kafka cluster setups用于 2 个不同 kafka 集群设置的 Spring Kafka 配置
【发布时间】:2020-11-16 11:33:17
【问题描述】:

在我们的一项基于 spring-boot 的服务中,我们打算同时连接到 2 个不同的 kafka 集群。这些集群每个都有自己的一组引导服务器、主题配置等。它们与this question 中的情况不同。

我将从不同主题名称的每个集群中读取不同类型的消息。可能有也可能没有多个生产者从该服务连接到两个集群,但我们肯定每个集群至少有一个消费者。

我想知道如何在 application.yml 中定义属性以适应这种设置,这样我就可以使用 2 个不同的 KafkaProperties 对象来创建 4 个容器工厂(2 个消费者,2 个生产者)。其余的,我相信,应该很简单,因为我需要使用相关的工厂来根据业务需求创建一个特定的容器/侦听器/kafkaTemplate。

【问题讨论】:

    标签: java spring-boot apache-kafka spring-kafka


    【解决方案1】:

    你不能;您需要禁用 Boot 的自动配置并自己为每个集群配置基础架构 bean。

    Boot 的自动配置只支持一个集群。

    【讨论】:

    • 在这种情况下,我想让 spring boot 自动配置一个集群并手动配置另一个集群。为了实现这一点,我正在考虑一种方法,我可以使用@Bean@ConfigurationProperties("my-app.kafka") 创建另一个KafkaProperties bean,遵循my-app.kafkaKafkaProperties 的所有规则并使用这个属性存储来配置第二个簇。可行吗?如果是,有什么我需要知道的缺点/注意事项吗?
    • 这行不通;例如,如果应用程序上下文@ConditionalOnMissingBean(ConsumerFactory.class) 中还没有ConsumerFactory bean,则引导只会配置ConsumerFactory。您必须自己声明这两组基础设施 bean。仅供参考,引导团队不认为 KafkaProperties 是公共 API,它可以随时更改,因此直接使用它存在一些(最小)风险。
    猜你喜欢
    • 2016-09-22
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    相关资源
    最近更新 更多