当前位置: 首页 > 知识库问答 >
问题:

当定义了多个kafkaComponent bean时,Kafka Camel Spring Boot自动配置不会被拾取

漆雕彬彬
2023-03-14

我目前正在使用这个camel-kafka-starter maven依赖项在Spring Boot中自动配置我的kafka camel组件。

@Component
public class route extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("file://target/inbox")
        .to("kafka:topic?brokers=localhost:9092");
    }
}
@Configuration
public class MyConfiguration {
  @Bean
  public KafkaComponent myKafkaComponent() {
    return new KafkaComponent();  //missing the linger-ms=20 i set in application.properties!
  }

  @Component
  public class route extends RouteBuilder {
     @Override
     public void configure() throws Exception {
        from("file://target/inbox")
        .to("myKafkaComponent:topic?brokers=localhost:9092");
     }
  }
}
myKafkaComponent.useAutoConfig()

理想情况下,在我的application.properties中,我会有40+个设置,我只想转移到我的用户定义的骆驼KafkaComponent。是否需要创建另一个Config类并映射所有在camel文档中定义的值?(类似于String@Value注释)

编辑:我正在查看源代码,同时也想知道是否有一种方法可以在我的bean定义中调用它。

共有1个答案

宋鸿云
2023-03-14

您可以创建一个类型为

ComponentCustomizer<KafkaComponent>

可用于自定义由camel自动配置的kafka组件

 类似资料:
  • 本机Spring Boot自动配置(例如one)也可以检测主类中声明的bean(例如注释的方法)。 如何对主类中声明的bean进行正确的bean检测? 编辑

  • 我正在从工具sbt更新一个旧的0.7.x构建文件,谢天谢地,它同时从名称中删除了对“Simple”的引用。 但是现在我不能为不同的配置使用不同的jar名称(这就是全部要点)。 正如SBT的作者之一和sbt-assembly的作者在一篇博客文章中所描述的那样,这应该是可行的。它也写在这个Stackoverflow问题中。但是这个例子需要一个sbt-assembly的古董版本(从2013年开始的0.9

  • MOSN 自定义配置说明。 本文是对 MOSN 自定义配置的说明。 Duration String 字符串,由一个十进制数字和一个时间单位后缀组成,有效的时间单位为 ns、us(或?s)、ms、s、m、h,例如 1h、3s、500ms。 metadata metadata 用于 MOSN 路由和 Cluster Host 之间的匹配。 { "filter_metadata":{ "mo

  • 如果你想自定义 Next.js 的高级配置,可以在根目录下新建next.config.js文件(与pages/ 和 package.json一起) 注意:next.config.js是一个 Node.js 模块,不是一个 JSON 文件,可以用于 Next 启动服务已经构建阶段,但是不作用于浏览器端。 // next.config.js module.exports = { /* config

  • 与以下属性相关联,但它并没有更好地工作 我该怎么办?

  • Gitea 引用 custom 目录中的自定义配置文件来覆盖配置、模板等默认配置。 如果从二进制部署 Gitea ,则所有默认路径都将相对于该 gitea 二进制文件;如果从发行版安装,则可能会将这些路径修改为Linux文件系统标准。Gitea 将会自动创建包括 custom/ 在内的必要应用目录,应用本身的配置存放在 custom/conf/app.ini 当中。在发行版中可能会以 /etc/g