我有两个 Rails 应用程序(一个用于 Web,一个用于后端)访问同一个 PGSQL 数据库。如果一个应用程序更改了数据库中的表,我想通知另一个应用程序。
我该怎么办?
最佳答案
我认为这取决于:
- 您需要它有多可靠。
- 您需要以多快的速度发送通知。
@techvineet 建议的 FAYE 解决方案提供了一个快速但不可靠的选项。 (注:我并不是说它会经常失败,但它可能偶尔会失败,也许是 1/1000,如果这会给你带来问题,那么就避免)
如果您需要 100% 可靠的东西,并且速度并不重要,您可以将审核事件写入数据库,然后从每个应用程序轮询该表(如果这些事件在实际工作完成时在同一事务中提交) ,你应该是安全的...但是它会像你的轮询周期一样慢。
最后,如果您想要快速且可靠的东西,那么您可以考虑使用 ActiveMQ 或 RabbitMQ 之类的东西来为您在应用程序之间提供可靠的消息传递以通知更改。您需要在每个应用程序中都有一个工作进程来监听更改并适本地处理它们。
我最后的评论是,这有点“闻起来”。事实上,您正在尝试这样做,这让我认为您的应用程序的架构可能需要从长远来看。一种明显的方法可能是将所有业务逻辑封装到公开 API 的应用程序中,然后从前端和后端应用程序调用该 API。
关于ruby-on-rails - 当 pgsql 数据库更改时通知多个 Rails 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18810604/