我正在开发基于Windows的应用程序,使用Postgresql将执行的过程
从UI获取信息
执行一些逻辑并将相关信息存储到数据库
存储的信息必须立即或按照计划间隔(例如xyzdate的5:00)通过networking发送
目前,我们已经开发了dispacher机制(线程),它不断地轮询数据库插入数据库中的新信息。 线程获取信息并发送到networking模块。
但是,我觉得这不是正确的做法
每次轮询都是一个开销。 有些时候没有什么可执行的
这不是实时的,因为我们每5秒钟就会进行一次轮询
所以
CREATE TRIGGER sys_exec和python
从Oracle AFTER INSERT触发器调用Windows服务
在数据库中更新信息后,是否有办法将触发器发送到我的networking模块?
或者有更好的方法来完成这个任务?
提前致谢。
是的,你是正确的@RDX,你不应该每次轮询它,而是你可以在Postgres中写一个触发器,并从这个触发器尝试调用一个Java程序,可以在下面的线程看到。
您可以使用Postgresql的listen / notify功能。
http://www.postgresql.org/docs/current/static/sql-listen.html
http://www.postgresql.org/docs/current/static/sql-notify.html
对这些消息感兴趣的客户端会执行一个listen语句,触发器会notify他们。
我不使用C#,但根据手册,您可以异步方式检索邮件 – 这仍然涉及一些“轻量级”轮询,因为通知邮件只作为服务器的答案的一部分发送。 手册声称运行一个“空”语句(如; )就足够了。 使用Java / JDBC我使用了一个简单的select 42 ,它不会在服务器上施加很大的工作负载,因为没有任何表被触摸。
这个轮询比实际检索表的数据明确得更快,更具可扩展性。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。