【问题标题】:Access to routeID in a FTP consumer when connection fails using apache camel使用 apache camel 连接失败时访问 FTP 使用者中的 routeID
【发布时间】:2016-04-29 21:23:00
【问题描述】:

我在路由中使用 FTP 端点,当与 ftp 的连接由于某种原因(例如连接超时或套接字超时)失败时,我需要将路由详细信息记录到数据库中。我使用轮询策略,并且该策略中的回滚方法在连接超时时被调用。但是回滚方法不允许我访问 RouteID 以将其记录到数据库中。

出于某种原因,我发现标志 consumer.bridgeErrorHandler 可以设置为 true 以将异常传递给默认错误处理程序。但这只是记录错误,并没有解决我如何获取路线详细信息的问题。

有人可以帮助您了解如何在回滚方法中访问 routeID,或者您可能有任何其他想法。

我正在使用 apache camel 2.13.4

【问题讨论】:

    标签: apache-camel camel-ftp


    【解决方案1】:

    您可以编写自己的错误处理程序并使用自定义逻辑来提取路由详细信息。示例:

    onException(SocketTimeoutException.class)
        .beanRef("myCustomErrorBean", "manageMyError")
    
    
    public void manageMyError(Exchange exchange) {
        CamelContext context = //get this from exchange or inject it via spring or something
        context.getRoutes();
        //iterate the routes and you can check for the routeIds and anything else you like
    }
    

    【讨论】:

    • 我已经在路由上定义了一个 OnException,但是当异常发生在消费者级别而不是在路由内部时,它不会被执行。
    • 在消费者层面上啊。 Camel 在与消费者打交道时有一些有趣的行为。这里解释了为什么以及你可以做些什么来获得自定义错误处理。 camel.apache.org/…
    • 是的,我之前浏览过链接。看起来我们只能使用记录错误处理程序和默认错误处理程序。这两个都不给我处理异常,并添加自定义代码。我想知道如何编写自定义错误处理程序,但找不到有关如何编写的信息。
    • 不幸的是,我不确定该功能集是否可以在 FTP 端点上使用。我会问骆驼论坛的人。如果您似乎无法使其正常工作,您始终可以使用石英端点并在骆驼路由上使用丰富调用,以便 FTP 组件与路由内联,并且主错误处理程序可以在路由上具有范围
    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多