【问题标题】:Listening for Database Changes on a Webserver via Java?通过 Java 监听 Web 服务器上的数据库更改?
【发布时间】:2021-02-19 05:30:23
【问题描述】:

我在 PHP 中有一个 Web 应用程序,如果用户执行特定操作,它会更改数据库。

另外还有一个用于 ui 的 Java 应用程序。每当特定用户的数据库值发生更改时,Java 应用程序都应通过 PHP 获得通知。

我的想法是使用 Firebase 云消息传递。这意味着用户在 Java 应用程序中注册,并且 FCM id 链接到 Java 应用程序。另一种方法可能是通过 PHP 实现一个套接字并将 Java 应用程序连接到它并等待套接字消息。第三种方法可能是每 x 秒轮询一次数据。这似乎不是什么好办法。

在 Java 应用程序中侦听数据库更新的推荐方法是什么?套接字连接可能有问题(例如限制为 10.000)还是无限?

【问题讨论】:

    标签: java php sockets notifications


    【解决方案1】:

    如果可以访问PHP代码,一个简单的解决方案是:

    您可以在需要时创建一个从 PHP 调用的 Java HTTP REST 服务器。

    2) 如果您想要更大的灵活性和可扩展性

    您可以在 PHP 和 Java 之间使用 JMS 中间件,它可以提供双向通信。见 rabbitMQ 或 activeMQ 您仍然需要访问 PHP 代码才能向中间件发送消息。 Java通过中间件监听接收消息

    3) 如果你无法访问PHP端,还有这个解决方案:

    你可以使用像 debezium 这样的工具来监听数据库的变化。

    【讨论】:

      【解决方案2】:

      因为听起来像是发布者/订阅者的问题,所以我会使用 AMQP(例如 RabbitMQ、Kafka):

      PHP 应用程序可以将specificAction 事件发布到交换器,Java 应用程序可以通过将队列绑定到该交换器来订阅这些事件。这增加了解耦和可用性。

      注意 - 有一小部分数据库支持更改流(如 MongoDB),它可以让您监听数据更改。

      【讨论】:

        猜你喜欢
        • 2013-10-25
        • 1970-01-01
        • 2016-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多