问题描述
从UI用户将给我们一些特定的时间(带有时区)以更新设备上的exe版本。 我们将其存储在postgresql db中,作为demandedInstallationTime。
-------------------------------------------------------------
| Id | DeviceName | demanded Installation Time | Other data |
-------------------------------------------------------------
我不是从Java中每分钟轮询一次,以检查表中是否有任何带有'demandedInstallationTime'的条目,然后调用安装,而是从Postgresql工具开始考虑。 像pg_notify()一样,但是在有表行的插入/更新/删除操作时有效。
还需要安排Cron作业按分钟或每小时等连续24/7运行,这在我们的情况下不可行。
我希望当'demandedInstallationTime'列等于'当前时间'时,一些线程自动通知/触发某些脚本。我们怎样才能做到这一点?有什么建议吗?
解决方法
您可以使用以PL/Perl或PL/Python(也可以使用其他语言)编写的触发器,该触发器执行某种外部脚本。当然,您需要仔细考虑执行此操作可能对性能/安全性造成的影响。
或者,您可以编写一个作为守护程序运行并检查更新的脚本(例如,在您感兴趣的表上由触发器编写的队列表中)或侦听通知。如果您真的很喜欢冒险,可以写一个custom background worker,但这对于期望的目的可能会不必要地复杂。