当数据库更改时在 Android 和桌面 Java 上触发事件

Firing events on Android and Desktop Java when a database changes

我目前正在尝试弄清楚我可以使用什么技术在数据库发生变化时远程触发事件,一种实时数据库。 android 应用程序和桌面 JavaFx 应用程序将通过同一数据库进行通信。当数据从桌面端更改时,我希望 Android 更新其数据,反之亦然,当 Android 上发生更改时。有没有什么方法可以在不定期轮询数据库更改的情况下实现这一目标?

我查看了 Firebase,它看起来很完美,但缺少桌面 java 库。同样,我已经对 Amazon AWS Lambda 和 DynamoDB 进行了试验,我可以让 Lambda 函数在 DynamoDB table 发生变化时触发。但是,我找不到让 Lambda 函数更新数据已更改的 Android/Desktop 应用程序的方法。

JavaFx 桌面应用程序是该项目的要求。

如果这不可能,或者如果我忽略了这个问题的一个众所周知的平台,我们深表歉意。任何帮助将不胜感激。

不,您不需要通过轮询过程来获得结果。要回答第一个问题,首先最灵活和最合理的方法是构建一个中间件来拦截任何更改。

  1. 创建一个脚本以在数据库更改时触发事件。按时间间隔。

第二次创建服务器,一个实时服务器,可以向任何客户端触发此类事件。 第三,java fx 客户端可以使用原生 observable 来完成这样的任务。但是我建议使用一个普通的监听器,一个完美的选择是 socket.io,android 和 vanilla java 可以使用网络套接字实现。对于 android 客户端,每当插入、转换等数据时,使用广播接收器(本地)触发事件以通知服务器。或者使用 socket.io 连接发送事件。差不多就这些了。

Firebase + Cloud Functions for Firebase 听起来非常适合您的用例。如果问题纯粹是 Java 对 Firebase 的支持,而不是 Android,您可能需要查看这个问题 Get Firebase to work with java, not Android