在Spring Boot中配置Kafka使用者=对使用者行为的损失控制?

时间:2018-12-11 17:37:24

标签: spring spring-boot configuration apache-kafka

我真的很喜欢使用Spring Boot中可用的所有配置来配置Kafka使用者:

ConsumerFactory() => KafkaListenerContainerFactory() => consume(V message)

但是,似乎我也失去了对apache kafka软件包附带的使用者行为的所有控制,例如在同步提交和异步提交之间来回切换,显式启动使用者并彻底关闭它。 使用Spring kafka界面,您只需实现一种方法,就可以开始流入消息:

@KafkaListener(topics = "#{'${kafka.topics}'.split(',')}", containerFactory = "kafkaListenerContainerFactory")
public void consumeString(String message) {
    System.out.println("Consumed message: " + message);
}

在我看来,所有这些消耗都是在Spring Boot自动提供的单独线程上进行的... 有人可以告诉我在使用Spring Boot配置KafkaConsumers(以及相同的KafkaProducers)时,如何仍然保持所有控制权吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

  

在我看来,所有这些消耗都发生在Spring Boot自动提供的单独线程上

是的,spring将kafka使用者包装在侦听器容器中。

最多您可以通过container properties配置行为。

从理论上讲,您可以保留kafka consumer factory返回的最新值,但是需要记住,对于单个容器,可以多次创建使用者。无论如何,只要保留参考,您就可以访问基础的kafka使用者 而无需进行反思。但这是一个hack,可能会影响容器的行为。