我有两个 Rails 应用程序(一个用于 Web,一个用于后端)访问同一个 PGSQL 数据库。如果一个应用程序更改数据库中的表,我想通知另一个应用程序。
我应该怎么做?
我有两个 Rails 应用程序(一个用于 Web,一个用于后端)访问同一个 PGSQL 数据库。如果一个应用程序更改数据库中的表,我想通知另一个应用程序。
我应该怎么做?
您可以尝试使用 Faye http://faye.jcoglan.com/,这是一个发布和订阅消息服务器。它可以与 Rails 集成https://github.com/jamesotron/faye-rails.git。通过订阅消息并发布消息,可以将消息从一个应用程序传输到另一个应用程序。
希望这会有所帮助。
我认为这取决于:
@techvineet 建议的 FAYE 解决方案提供了一个很好的快速但不可靠的选择。(注意,我并不是说它会经常失败,但它可能偶尔会失败,也许是 1/1000,如果这会给您带来问题,请避免)
如果您需要 100% 可靠的东西,并且速度并不重要,您可以将审计事件写入数据库,然后从每个应用程序轮询该表,如果这些在与实际工作完成相同的事务中提交,您应该安全...但是它会像您的轮询周期一样慢。
最后,如果您想要快速且可靠的东西,那么您可以考虑使用 ActiveMQ 或 RabbitMQ 之类的东西来为您提供应用程序之间的可靠消息传递以通知更改。您需要在每个应用程序中都有一个工作进程来监听更改并适当地处理它们。
我的最后一条评论是,这有点“味道”。您尝试这样做的事实使我认为您的应用程序的架构可能需要从长远来看。一个明显的方法可能是将所有业务逻辑封装到一个公开 API 的应用程序中,然后从前端和后端应用程序调用该 API。