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

当处理失败并且异常被错误处理器处理时,如何阻止camel删除FTP文件

訾淇
2023-03-14

我有一个路由,它从FTP服务器读取,然后处理消息。该路由具有DeadletterChannel错误处理程序,当处理消息时引发异常时,它会将消息路由到某个bean

现在,当错误处理程序处理异常时,Camel 假定所有内容都正常,并且仍然删除 FTP 文件。

如果我删除错误处理程序,Camel不会在出现异常时删除文件。

现在我的问题是,我如何有一个DeadletterChannel错误处理程序,同时在处理失败时阻止Camel删除FTP文件?

共有2个答案

韩耘豪
2023-03-14

您有几个选项可以做到这一点:

  1. 您根本不使用delete=true选项,而是在“成功”场景中自行处理文件的删除。这将相对透明
  2. 在输入DLC的情况下,您可以操纵正在消费的endpoint。因此,只需在onPrepareFailure中为DLC定义自己的处理器。参见示例:deadLetterChannel(“jms:dlc”)。onPrepareFailure(newErrorProcessor())之后,您可以使用getContext()方法获取camel上下文,并使用getEndpoint()方法之一获取使用者endpoint。当您拥有endpoint时,您可以看到哪个“processfactory”类与getProcessStrategy一起使用,并且可以在那里更新delete标志以避免删除文件。对于此endpoint,还可以使用方法setProcessStrategy定义自己的“processStrategy”类。请自行查看在您的案例中使用的流程策略类。然后,您可以重写相应的delete方法,如<code>deleteLocalWorkFile</code>,而不执行任何操作
殳睿
2023-03-14

您可以在ftpendpoint上设置选项noop=true。然后该文件将被单独保留。

尽管你会不得不考虑如何在将来跳过拾取文件?为此,您可以使用幂等存储库来跟踪以前处理过的文件。或者另一种方法是在完成等操作后移动文件。

当ftp组件扩展文件组件时,请参阅以下详细信息:http://camel.apache.org/file2

 类似资料:
  • 当程序出现错误或者异常时,我们一般会希望在开发时输出报错信息,在生产环境时隐藏详细的信息。 在 imi 中,提供了 Http 服务的错误异常默认处理器支持。 默认 Http 错误处理器:Imi\Server\Http\Error\JsonErrorHandler 指定默认处理器 配置文件中: return [ 'beans' => [ 'HttpErrorHan

  • 我是骆驼新手,有一些关于异常处理的问题。我需要有3重试尝试的消息处理,超过尝试限制后,它需要发送消息到deadletterchannel。如何组合maximumRedeliveries和ErrorHandler?

  • 我是Camel Apache的新手,在异常处理方面遇到了一些麻烦。我要做的是捕捉SalesforceException,然后根据StatusCode采取不同的操作。 例如,当statusCode>=500时,我必须尝试重新传递消息。这是一个技术错误。当statusCode<500时,我必须将请求和响应组合在一起,并将其放在FailureQueue上。

  • 我有一条处理hl7消息的骆驼路线。处理成功后,我希望将其传递给另一个endpointb以进行进一步处理。 但是如果在processHL7中发生任何异常,我有一个catch块来做一些处理。当我进入doCatch并遇到end时,我想停止处理,但这并没有发生。无论发生什么,流都将到达endpointb。当我进入doCatch块时,如何停止?

  • 我的任务是处理路由中所有传入的消息,并将它们保存到数据库中。我的路由从webservice(camel cxf)开始,然后处理到ejb并返回soap响应。 我决定使用驼峰sql组件。就我在记录传入消息方面没有任何问题而言: 但是我不知道如何处理异常并以SOAP消息的形式保存它们。 但它将原始消息保存在数据列中。有谁能帮忙吗?

  • 您需要修复网页抛出的异常和在JavaScript中调试错误。 如果你能得到页面异常和JavaScript错误的细节,在实际工作中非常有用 。当页面抛出异常或脚本产生错误时,Console(控制台)面板会提供明确的可靠信息,以帮助您找到并解决问题。 在Console(控制台)面板中,您可以跟踪异常及跟踪导致异常的执行路径,显式地或隐式地捕获它们(或忽略它们),甚至可以设置错误处理程序来自动收集和处理