【问题标题】:Apache camel ftp component - notification on successful transferApache camel ftp 组件 - 成功传输的通知
【发布时间】:2014-11-20 19:50:51
【问题描述】:

我们正在使用 Camel 构建 Java 应用程序以在两个 FTP 位置之间传输文件。有没有办法获得有关文件传输成功的通知?我们不允许使用 JMS 解决方案来构建应用程序。

【问题讨论】:

  • 一个路由中可以有多个to调用。我不知道您想到了什么通知机制...如果不是 JMS,那么也许是网络呼叫? .to("ftp:...").to("http:...") 或者您希望它发送电子邮件? .to("ftp:...").to("smtp:...") 或者您可能想使用 SEDA 事件 .to("ftp:...").to("seda:...")。我想你明白了。
  • @Ray 感谢您的快速回复。为了更清楚起见,总流程将包括 1. 从远程 FTP 读取一个位置,成功读取后将其重命名并将其移动到不同的文件夹 2. 添加窃听以进行一些处理 3. 将文件写入不同的远程 FTP地点。是否有可能获得成功写入/传输的状态通知?
  • 我知道您出于业务原因需要此通知。您是否需要将其传达给来人或只是记录它。你在用完成通知做什么。您对此的回答将有助于我们增强我们试图给出的答案
  • @NaveenRaj 是的,naveen,我需要跟踪所有成功的转移。这需要在不使用任何 JMS 解决方案的情况下实现。仅仅记录可能对我来说是不够的。理想情况下,我正在从目标 FTP 服务器中寻找某种成功标志。

标签: java apache-camel camel-ftp


【解决方案1】:

我希望你可以创建另一个路由,并将 seda/vm 作为端点。这个端点需要在 ftp 端点之后调用。

<route id="MainRoute">
<from uri="ftp:RemoteLocation"/> 
<from uri="seda:Retry"/>
<to uri="seda:MyLog"/>
<!--Your Main Processing logic -->
</route>

<route id="Notification-processor">
<from uri="seda:MyLog"/>
<!--Your Logging/Notification Processing logic -->
</route>

在上述通知处理器场景中,您可以拥有自定义通知/日志活动。这是您的自定义通知逻辑。如果您需要通知异常情况,您可以在通知处理器中有一个 to 端点来发送通知。

您需要编写逻辑来检查消息是否完整,如果不完整,您可以在通知处理器中调用一个 bean,该 bean 可以具有动态路由从 ftp 位置提取特定文件并重新处理它。如下所示

<route id="Notification-processor">
<from uri="seda:MyLog"/>
<!--Anomaly checker  -->
<to uri="seda:Retry"/>
<!--Your Logging/Notification Processing logic -->
</route>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多