我正在开发一个基于MFC的Windows应用程序,使用PostgreSQL执行
目前,我们已经开发了一种调度机制(线程),它不断轮询数据库以获取插入数据库的新信息。该线程获取信息并发送到网络模块。
但是,我认为这不是正确的方法
所以
有没有办法在数据库中更新信息后立即向我的网络模块发送触发器?
或者更好的方法来完成这项任务?
提前致谢。
答案 0 :(得分:1)
您可以使用PostgreSQL的listen / notify功能。
对消息感兴趣的客户端将执行listen
语句,然后触发器将notify
。
我不使用C#,但根据the manual,您可以以异步方式检索消息 - 这仍然涉及一些“轻量级”轮询,因为通知消息仅作为答案的一部分发送服务器。该手册声称运行“空”语句(例如;
)就足够了。使用Java / JDBC我使用了一个简单的select 42
,它不会在服务器上施加大的工作量,因为没有触及表。
与实际检索表格数据相比,此轮询速度更快,更具可扩展性。
答案 1 :(得分:0)
是的,你是对的@RDX,你不应该每次轮询它,而不是你可以在Postgres中编写一个触发器,并从该触发器尝试调用java程序,这可以在下面的线程中看到。