java—如何在spring boot中使用onexception()处理异常

a0x5cqrl  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(427)

spring boot apache camel javadsl应用程序读取来自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。我需要我们用吗 onException() ?

vltsax25

vltsax251#

你可以这样做(没有试过运行它,所以请注意任何打字错误)

@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 为那些人服务。
还要注意,我在路由之外定义了一个异常,因此您添加的异常处理逻辑将是全局的,并且适用于您遇到的所有路由 DisconnectException

相关问题