当pgsql数据库更改时通知多个Rails应用程序

时间:2013-09-15 08:51:30

标签: ruby-on-rails postgresql

我有两个Rails应用程序(一个用于Web,一个用于后端)访问同一个PGSQL数据库。如果一个应用程序更改了数据库中的表,我想通知其他应用程序。

我应该怎么做?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用Faye http://faye.jcoglan.com/,这是一个发布和订阅消息服务器。它可以与Rails https://github.com/jamesotron/faye-rails.git集成。通过订阅消息和发布,可以将消息从一个应用程序传输到另一个应用程序。

希望这会有所帮助。

答案 1 :(得分:1)

我认为这取决于:

  1. 你需要多么可靠。
  2. 您需要多快才能发送通知。
  3. @techvineet建议的FAYE解决方案提供了一个快速但不可靠的选项。 (N.b.我并不是说它会经常失败,但它偶尔可能会失败,可能是1/1000,如果这会导致你出现问题,那就避免了)

    如果您需要100%可靠的东西,并且速度不重要,您可以将审计事件写入数据库,然后从每个应用程序轮询该表,如果这些是在实际工作完成的同一事务中提交的,你应该安全......但它会和你的投票周期一样慢。

    最后,如果您想要快速可靠的东西,那么您可以使用ActiveMQ或RabbitMQ之类的东西来为应用程序之间提供可靠的消息传递以通知更改。您需要在每个应用程序中使用工作进程来监听更改并适当地处理它们。

    我最后的评论是,这会'闻起来'一点点。您尝试这样做的事实让我认为您的应用程序的架构可能需要长期考虑。一种显而易见的方法可能是将所有业务逻辑封装到一个暴露API的应用程序中,然后从前端和后端应用程序调用该API。