我正在构建一个在查找数据库(oracle)后进行一些处理的应用程序。
目前,我已经使用Spring Integration配置了应用程序,并且无论是否更新或插入任何数据,它都会定期轮询数据。
这里的问题是,我无法添加或使用任何列来区分旧记录和新记录。此外,对于表中也没有插入或更新,轮询器轮询来自数据库的数据并将数据提供给消息通道。
为此,我想切换到数据库更改通知,我需要注册类似
的查询 SELECT * FROM EMPLOYEE WHERE STATUS='ACTIVE'
现在这个活动状态适用于旧条目和新条目,我想从列表中删除旧条目。因此,只有在新插入或现有更新之后,我才想获得新添加或最近更新的数据。
答案 0 :(得分:0)
嗯,您无法修改数据库中的数据模型真的很难过。我真的建议你为了方便而坚持改变桌子。例如,可能只是一列LAST_MODIFIED
,因此可以过滤旧记录,只查询哪些日期非常新鲜。
在Oracle中也有trigger
的可能性,因此您可以对INSERT / UPDATE执行某些操作,并根据您的兴趣修改其他表。
否则,除非再使用一个额外的持久性服务来跟踪已加载的记录,否则您无法选择。例如,MetadataStore
基于Redis或MongoDB:https://docs.spring.io/spring-integration/docs/4.3.12.RELEASE/reference/html/system-management-chapter.html#metadata-store