当前位置: 首页 > 知识库问答 >
问题:

ApacheCamel:如何在文件生成endpoint处理路由引擎外部的异常

上官砚文
2023-03-14

我的申请中有如下路线-

从("sftp: config").到("file: config")

我必须在生成endpoint时处理那些超出apache camel默认异常处理边界的异常。例如。编写文件时可能会出现异常。我如何处理那个异常?

在camel文档中,我了解到,对于文件消费者,他们提供了不同的选项,比如-consumer。errorHandler和consumer。bridgeErrorHandler。但是对于文件生产者(比如producer.errorHandler)没有选项。

共有2个答案

冀鸿才
2023-03-14

这不是这个问题的正确答案。但是,当一个事件从多个事件中抛出错误/异常时,这将有助于希望取消整个过程的人。

例如,我正在从一个位置旅行到另一个需要同时使用航班和火车的位置。所以,我需要一次同时预订两者。如果有人会失败,整个交易就必须失败。为了实现这个用例,作者在Apache camel中遵循了SAGA模式。有关更多信息,请查看下面的链接。

阿帕奇带来了传奇

终洛华
2023-03-14

Camel的文件组件使用Java file API来编写文件,因此,如果出现任何错误,Java API应将其报告为错误(使用异常)或在其部分API中返回true | false。

如果发生上述任何一种情况,那么Camel文件组件(producer)应该检测到这一点,并将其包装为异常,错误处理程序应该能够对其做出反应。

根据您使用的文件系统/JDK/平台的不同,它的行为可能会有所不同。请参阅文件api/javadoc等。

你没有提供太多的细节,比如发生了什么,但答案是,开箱即用的,Camel的错误处理程序包含在生产者端。

在消费者方面,情况有点不同,请参阅有关桥接错误处理程序选项的更多信息。

 类似资料:
  • 根据解析上下文匹配数据库和表的分片策略,并生成路由路径。 对于携带分片键的 SQL,根据分片键的不同可以划分为单片路由(分片键的操作符是等号)、多片路由(分片键的操作符是 IN)和范围路由(分片键的操作符是 BETWEEN)。 不携带分片键的 SQL 则采用广播路由。 分片策略通常可以采用由数据库内置或由用户方配置。 数据库内置的方案较为简单,内置的分片策略大致可分为尾数取模、哈希、范围、标签、时

  • 问题内容: 我有一个生成器和一个使用它的函数: 如果生成器引发异常,我想在使用者函数中处理该异常,然后继续使用迭代器,直到耗尽为止。请注意,我不想在生成器中有任何异常处理代码。 我想到了类似的东西: 但这对我来说看起来很尴尬。 问题答案: 这也是我不确定是否正确/优雅处理的事情。 我要做的是从生成器中获取一个,然后将其提升到其他位置。喜欢: 这样,我仍然继承了Exception而没有引发它,这将导

  • 我正在使用Spring。我的应用程序中有几个终结点。基本上,每个endpoint返回一个不同的对象。该应用程序由多个层组成。无论在哪里发生错误,对我们来说,将错误传播到endpoint的调用方都很重要。我们的方法 就是抛出一个异常,错误发生,它应该被捕获在endpoint中,endpoint应该根据异常中的信息改变响应的状态码。我们赶上异常,因为我们不想将肥皂错误抛给调用方 我们已经到了架构中的一

  • 安装程序的问题是,Camel没有为调用我的自定义异常处理程序。路由SaveSample发生验证异常。下面是我的发现,它是如何进一步深入骆驼处理器类型的。 > 控件将转到中,在那里查找异常策略。失败exchange的根(即->postSample)在此应定义异常处理程序。 稍后,Camel转到failing(即saveSample)以标识异常处理程序。 这意味着,在下面的表达式中,routeId来自

  • 有时您需要使用未维护的、旧的、脏的、巨大的、对我们的程序可能有危险的库。 是否有以安全方式执行此代码的最佳实践? 最近,我发现(可能是在我的知识和经验水平上)没有捕捉到异常。直到今天,我使用的常见做法是将代码包装到Fiber中,在内部捕获异常并通过Channel发送出去。现在它不工作(我不能把产量或Proc放在光纤中)。 危险的lib可以看起来像普通类,方法用Fiber.yield封装光纤,以便现

  • 问题内容: 我正在编写一个简单的命令行Java实用程序。我希望用户能够使用运算符传递相对于其主目录的文件路径。所以像 我的问题是有没有办法让Java自动解决这种类型的路径?还是需要为操作员扫描文件路径? 似乎应该将这种类型的功能烘焙到对象中。但这似乎并非如此。 问题答案: 在大多数情况下,从用户处获得一个简单的字符(在转换之前)就足够了- 因为波浪号仅在路径目录部分的第一个字符时才扩展到主目录。