2014-11-20 96 views
1

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

+0

您可以在路线中有多个'to'调用。我不知道你有什么通知机制......如果不是JMS,那么可能是网络电话? '.to(“ftp:...”)。(“http:...”)'或者你想让它发送一封电子邮件? (“ftp:...”)。to(“smtp:...”)'或者也许你想使用SEDA事件'.to(“ftp:...”)。to(“seda :...“)'。我认为你说对了。 – Ray 2014-11-20 20:16:55

+0

@Ray感谢您的快速回复。为了增加一些清晰度,总流量将包括: 1.从远程FTP读取一个位置,在成功读取后重新命名并将其移动到不同的文件夹 2.添加窃听来做一些处理 3.将文件写入到不同的远程FTP位置。 是否有可能获得成功写入/传输的状态通知? – kallada 2014-11-20 20:36:29

+0

我知道您出于商业原因需要此通知。你需要将这个信息传达给comeone或者只是登录它。你在完成通知中做什么?你的回答将帮助我们提高我们试图给予的答案 – 2014-11-22 18:17:34

回答

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> 

在Notification-processor的上述场景中,您可以定制notificaiton/log活动。这是您的自定义通知逻辑。如果您需要通知异常情况,您可以在通知处理器中为终端发送通知。

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

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