Spring boot 当Spring kafka无法连接到Producer端点时,如何捕获可能发生的ProvisioningException?

Spring boot 当Spring kafka无法连接到Producer端点时,如何捕获可能发生的ProvisioningException?,spring-boot,spring-kafka,kafka-producer-api,Spring Boot,Spring Kafka,Kafka Producer Api,在Spring引导初始化阶段,当Spring kafka无法连接到Producer端点时,如何捕获可能发生的ProvisioningException 我正在使用名为springcloudstream的库,或者在我的例子中,更具体地说:springcloudstarterstreamkafka 我假设必须有一种方法来定义配置Bean或AOP,它可能能够捕获由于连接问题引发的null错误?连接断开时,现有错误信息不足: Caused by: java.util.concurrent.Timeout

在Spring引导初始化阶段,当Spring kafka无法连接到Producer端点时,如何捕获可能发生的ProvisioningException

我正在使用名为
springcloudstream
的库,或者在我的例子中,更具体地说:
springcloudstarterstreamkafka

我假设必须有一种方法来定义配置Bean或AOP,它可能能够捕获由于连接问题引发的
null错误
?连接断开时,现有错误信息不足:

Caused by: java.util.concurrent.TimeoutException: null
    at org.apache.kafka.common.internals.KafkaFutureImpl$SingleWaiter.await(KafkaFutureImpl.java:108)
    at org.apache.kafka.common.internals.KafkaFutureImpl.get(KafkaFutureImpl.java:272)
    at org.springframework.cloud.stream.binder.kafka.provisioning.KafkaTopicProvisioner.createTopicAndPartitions(KafkaTopicProvisioner.java:355)
    at org.springframework.cloud.stream.binder.kafka.provisioning.KafkaTopicProvisioner.createTopicIfNecessary(KafkaTopicProvisioner.java:329)
    at org.springframework.cloud.stream.binder.kafka.provisioning.KafkaTopicProvisioner.createTopic(KafkaTopicProvisioner.java:306)
我说的是这里记录的“Bean创建阶段”:它描述了如何将自己的代码挂接到初始化阶段,但我想挂接到第三方代码

注:赏金已过期。一个在《春天卡夫卡》之外的答案是可以的答案仍然与我的问题相关


注意:我发现另一个问题也不能提供很好的答案:

例如,您可以在ExcepcionHander中捕获该问题

@ControllerAdvice
@RestController
public class ExceptionHandler {

  @ExceptionHandler(value = {ProvisioningException.class})
  public void handleException(ProvisioningExceptione) {
    ....code....
  }
我的意思是主要的问题是知道你什么时候得到这个错误。。。。
当调用一个方法时,该方法应该抛出它,但是如果它在Initialization或类似的东西上,它是不同的。我可以在您的问题中看到这样的信息,请更具体些

我认为您这里的建议只捕获了Rest控制器中发生的异常。我试图捕获在调用任何rest控制器之前在Spring初始化期间发生的ProvisioningException。在Spring初始化期间,Spring cloud stream尝试绑定到Azure资源端点,初始化运行状况检查,如果连接信息不正确,则会失败。我将修改我的问题以澄清这一点。是的,你是对的,它只适用于rest控制器。如果你能抓住它,你想做什么?我将尝试找出如何做到这一点,因为在Springbeans的初始化过程中,我必须首先检查一些事情。。我想我知道怎么做,但我必须测试一下