java - apache-camel 错误处理程序范围澄清

标签 java apache-camel

下面是《Camel In Action》书中的路线示例。上下文范围内有一个错误处理程序和两个路由定义。我的问题

  1. 上下文级别错误处理程序仅适用于路由 1 的说法是否正确?
  2. 死信错误处理程序是否会针对路由 2 中的任何步骤(即 orderService.validate()orderService.enrich() 中的任何步骤引发的任何异常)启动>.
  3. 如果我想要针对 validate()enrich() 方法产生的异常使用不同的错误处理程序,该怎么办?

    //上下文范围错误处理程序

    errorHandler(defaultErrorHandler()
        .maximumRedeliveries(2)
        .redeliveryDelay(1000)
        .retryAttemptedLogLevel(LoggingLevel.WARN));
    
    //Route 1
    
    from("file://target/orders?delay=10000")
        .beanRef("orderService", "toCsv")
        .to("mock:file")
        .to("seda:queue.inbox");
    
    //Route 2 with route scope error handler
    
    from("seda:queue.inbox")
        .errorHandler(deadLetterChannel("log:DLC")
        .maximumRedeliveries(5).retryAttemptedLogLevel(LoggingLevel.INFO)
        .redeliveryDelay(250).backOffMultiplier(2))
        .beanRef("orderService", "validate")
        .beanRef("orderService", "enrich")
        .to("mock:queue.order");
    

最佳答案

你对 #1 和 #2 的假设是正确的......

对于 #3,可以定义 Exception Clauses捕获 bean 方法抛出的显式异常(OrderValidateException、EnrichException 等)或使用内联 try-catch route 每个步骤周围的街区(我自己更喜欢第一种方法)

关于java - apache-camel 错误处理程序范围澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9594737/

相关文章:

java - 不转义 Spring WS SOAP 主体中的字符

apache-camel - 处理器,组件和端点之间的区别

java - 优先打包排除和打包包含maven war插件

java - 为什么显示 "No database Selected"SQLException

java - JAXB:在 map 上使用 @XmlIDREF

apache-camel - Camel Sftp - 下载多个文件

xml - Xpath表达式从CDATA获取值

java - 如何使用 md5 通过 Camel 路由到 S3 检查文件完整性?

java - 下一个按钮在达到数组限制时打开另一个 Activity

java - 解决Java Oracle并发更新/删除语句