我有两个系统,分别称为 A 和 B。当 A 中的某些重要对象发生变化时,A 通过 Apache Camel 将其发送给 B。但是,我遇到过一种情况,当 A 实际上具有对象的更改日志时,而 B 必须仅反映对象的实际状态。此外,A 中的更改日志可以包含“未来”记录。这意味着,该对象的状态更改被安排在未来的某个时刻。系统 A 的用户可以编辑此更改日志、删除更改记录、添加具有任何时间戳(过去和将来)的新更改记录,甚至更新现有更改。当然,A 将这些更改记录发送给 B,但 B 只需要对象的实际状态。
请注意,我可以从 A 查询对象,但 A 是一个性能关键系统,因此我不打算查询某些内容,因为它会导致额外的负载。此外,用于从 A 查询数据的 API 过于复杂,我想尽可能避免使用它。
我可以在这里看到两个问题。首先是意识到变更日志记录中的特定变化是否会导致实际状态的变化。我要将更改日志存储在中间数据库中。随着更改日志记录的到来,我将在中间数据库中添加/删除/更新它,然后计算对象的实际状态并将此状态发送给 B。
其次是跟踪变更计划。除了以固定的时间间隔(比如 15 分钟)运行定期作业之外,我什么都不能发明。此作业将扫描从上次调用到当前调用的时间间隔内的所有记录。
我喜欢 Apache Camel 的原因是它基于组件的方法,当您只需要连接端点并完成所有工作时,只需少量编码。在 Apache Camel 和 EIP 中是否有任何预先存在的原语来解决这个问题?