0

我是 Camel 的新手,正在寻找模式或策略来管理 Camel 路线中目标系统的可用性。

例如,假设我想要: - 从文件服务器读取输入数据 - 处理数据(数据 -> targetData) - 使用 Rest 服务(称为 TargetSystem)将目标数据(TargetData)发送到目标网站

我的问题是,如果 TargetSytem 出现故障,最好的策略是什么?

我了解,如果路线失败,则可以回滚整个过程。但是如果 TargetSystem 是一个外部系统并且可能会关闭几个小时,我认为在目标系统启动之前尝试回滚进程不是一个好方法。

有没有适合这个问题的模式或策略?

问候

吉尔斯

4

1 回答 1

0

这是我在几个系统中使用的模式。

  • 将您的TargetData 保存在某处(数据库表、JMS 队列、Redis,...)
  • 创建一个读取未发送的TargetData并将其发送到TargetSystem的路由
    • 如果传输正常,则相应地标记TargetData(例如:在表格行中设置标志,从队列中删除等...)
  • 从定时器和/或其他路由周期性地触发这样的路由。您甚至可以使用 shell 命令触发它以手动“强制”重新发送未发送的数据。

您可以根据自己的需要对其进行自定义,例如在适当的地方添加日志记录,在每次试探性发送发生时在数据库表中进行跟踪,失败次数,重试次数等等......

您现在可以将应用程序模块化为 2 个模块:一个接收Data并将其处理到TargetData,另一个管理TargetDataTargetSystem的传输。
模块可能意味着 2 个 CamelContextes、2 个 OSGi 包、2 个完全独立的 Java 应用程序。

于 2017-04-24T15:34:59.043 回答