【发布时间】:2022-01-08 19:27:36
【问题描述】:
我正在尝试将一些非关键数据推送到 Kafka,但我仍然希望应用程序在没有 Kafka 的情况下运行。但是我的 Spring Boot(使用 spring-kafka 2.7.2)现在无法正常启动,并且处于以下循环中:
[AdminClient clientId=adminclient-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available.
基本上这会阻止对我的应用程序的所有 http 请求,因为我猜在连接到 Kafka 之前无法完成启动过程。大概一分钟后,我收到“Tomcat 已启动 xx”消息,所以现在应用程序运行了,我猜?
除了现在调用 Kafka 相关服务时,它再次进入循环:
org.apache.kafka.clients.NetworkClient : [Producer clientId=producer-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available.
[ad | producer-1] org.apache.kafka.clients.NetworkClient : [Producer clientId=producer-1] Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected
这又持续了 60 秒,然后停止,我收到内部服务器错误。
我想简单地将 Kafka 视为一项可选服务,即使在生产中我们会不断启动它,这对于任何测试或开发服务器或开发机器等可能都不是真的。基本上“如果它正在运行,把这个数据推送到这个topic,如果没有运行,就好”的情况。
有没有办法用 Kafka 配置 Spring,这样它就不会阻塞这样的一切(理想情况下,这一切都应该在后台线程中运行,这是另一回事,但很奇怪 Kafka 会阻塞所有主线程请求)?
谢谢
【问题讨论】:
-
这个答案有帮助吗? stackoverflow.com/questions/70182077/…
标签: spring spring-boot apache-kafka spring-kafka