【问题标题】:How to handle exception using onException() in Spring Boot Camel如何在 Spring Boot Camel 中使用 onException() 处理异常
【发布时间】:2021-03-11 06:39:56
【问题描述】:

Spring boot Apache Camel-Java DSL 应用从 Kafka 主题读取消息。

@Component
public class KafkaTopicService extends RouteBilder {

    public void configure(){
       from("kafka:myTopic?brokers=localhost:9092")
           .log("Message received from Kafka: ${body}")}
}

如果我停止 Kafka,我会得到 org.apache.kafka.common.errors.DisconnectException

我查看了onException(...class).handled(true),但我不确定如何在我的代码中实现对异常的处理。有人可以给我几个实现示例吗?有哪些可用选项?例如记录消息或重新尝试阅读消息? 文档还提到了 Quarkus。我是否需要 Quarkus 才能使用onException()

【问题讨论】:

    标签: java spring-boot apache-kafka apache-camel spring-camel


    【解决方案1】:

    您可以执行类似的操作(尚未尝试运行它,因此请注意任何拼写错误)

    @Component
    public class KafkaTopicService extends RouteBilder {
    
        public void configure(){
    
            onException(org.apache.kafka.common.errors.DisconnectException.class)
                .log("Error connecting kafka");
    
            from("kafka:myTopic?brokers=localhost:9092&bridgeErrorHandler=true")
               .log("Message received from Kafka: ${body}")}
    }
    

    请注意我添加了bridgeErrorHandler=true。通常异常处理发生在from 之后。在大多数使用bridgeErrorHandler 的情况下,我们可以使用onException 函数。

    还请注意,我在您的路由之外定义了 onException,因此您添加的异常处理逻辑将是全局的,并且适用于您遇到的所有路由DisconnectException

    【讨论】:

      猜你喜欢
      • 2014-07-27
      • 2019-07-21
      • 1970-01-01
      • 2017-06-03
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2018-01-16
      • 1970-01-01
      相关资源
      最近更新 更多