我正在使用Spring Integration使用其入站通道适配器来使用RSS源,并将源写入数据库表。
为防止进程停止/启动时出现重复条目,我启用了PropertiesPersistingMetadataStore。作为辅助措施,在数据库表格中,我还在Feed ID / Feed条目链接列中有一个唯一约束。
这似乎工作正常,但我注意到一些重新启动(并非所有时间)我得到一些数据库异常错误,它试图再次插入相同的RSS提要项。
在什么条件下我会得到这些重复的错误,无论如何我可以绕过它们吗?
答案 0 :(得分:0)
PropertiesPersistingMetadataStore
仅在正常的应用程序关闭时保持其状态(当应用程序上下文为destroy()
时)。
但是,它会实现Flushable
,因此您可以在保留后在流中为其调用flush()
。
在db事务提交后提交表达式@metadataStore.flush()
之后,您可以使用transaction synchronization刷新存储。
或者,您可以使用更强大的持久性存储,例如Redis,它会在每次更新时保留。