【问题标题】:Why to use @Autowired to run Kafka Streams topology in a Spring Boot Application?为什么要使用 @Autowired 在 Spring Boot 应用程序中运行 Kafka Streams 拓扑?
【发布时间】:2022-02-07 17:16:58
【问题描述】:

我正在尝试在 Spring Boot 应用程序中运行 Kafka Streams Topology。
example on confluent website 中,他们做了以下事情:

@Component
class Processor {
    @Autowired
    public void process(final StreamsBuilder builder) {
        // the logic to run the topology which is a blocking call
    }
}

我认为@Autowired注解意味着方法过程将被Spring框架调用。

我的问题是:鉴于对方法进程的调用正在阻塞调用 这是在 Spring Boot 应用程序中运行拓扑的最佳实践吗? 为什么不在单独的线程中运行它?

【问题讨论】:

  • 为什么你认为这不会在单独的线程中运行? IE。 Spring 的 Component Scanner 线程

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


【解决方案1】:

@Autowired 指示 Spring 将现有 StreamsBuilder bean 作为参数注入process(...) 函数。这是在引导应用程序上下文时完成的,因此它不会阻塞正在运行的拓扑本身,它通过某种new KafkaStreams(builder.build(), props);作为单独的线程启动

因此,这样做绝对没问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    • 2021-09-27
    • 2023-03-09
    • 2021-12-15
    • 1970-01-01
    • 2019-10-23
    相关资源
    最近更新 更多