【发布时间】:2015-05-30 11:05:57
【问题描述】:
我正在进行我的第一个 Camel 项目,如果这很明显或令人困惑,敬请见谅。
该应用程序是一个简单的服务,快乐的路径是从一个文件夹中收集一个 PDF,获取一个电子邮件地址来发送它,构建和发送电子邮件(使用 Velocity 模板,以 PDF 作为附件),记录电子邮件已发送,然后删除文件。
但我正在尝试构建一些重试逻辑,将文件移动到单独的文件夹以便稍后重新加载。
我要解决的问题是 Velocity 组件用电子邮件正文覆盖了交换正文,如果我随后用文件使用者组件结束路由,则此电子邮件正文会替换 PDF 内容。
(我认为我不能在文件 producer 组件上使用 'move' 参数,因为我正在使用两个重试文件夹 - 如果稍后再发送电子邮件,我不想重新发送路径中的步骤失败。)
我可以将文件内容复制到交换的另一部分,然后在移动文件之前将其恢复,但这对我来说感觉很邋遢。在恢复处理文件之前,有没有办法从交换的副本中运行电子邮件组件?或者其他获取交换体早期版本的方法?
【问题讨论】:
-
如果您只想将 PDF 移动到其他位置,以便在出现故障时可以访问这些文件,然后将消息多播到 seda 路由和速度模板路由。这样,两条路由都会有消息的副本。
标签: java apache-camel