Java:在 SQL 数据库中对事件执行某些操作?

标签 java sql mysql events

我正在构建一个包含分布式部件的应用程序。 这意味着,当一部分(编写者)可能向数据库中插入、更新信息时,另一部分(读者)正在读取该信息并对其进行操作。

现在,我希望在读取器中触发一个 Action 事件,并在我从写入器插入内容时从数据库重新加载信息。

有什么简单的方法吗?

这是个好主意吗? :

// READER
while(true) {
    connect();

    // reload info from DB
    executeQuery("select * from foo");

    disconnect();
}

编辑:更多信息

这是一个餐厅销售点系统。

每当收银员将订单输入数据库时​​,厨房中的应用程序就会收到通知。这就是您会在麦当劳看到的那种系统。

应用程序不需要以任何方式连接。但是每个部分都将连接到单个 mySQL 服务器。

而且我相信我会立即收到通知。

最佳答案

您可能会考虑在您的应用程序中设置一个嵌入式 JMS 服务器,我会推荐 ActiveMQ,因为它非常容易嵌入。

对于您想做的事情,JMS 主题非常适合。当收银员输入订单时,订单不会写入数据库,而是写入有关主题的消息中,我们将其命名为 newOrders。

关于该主题,有 2 个订阅者:NewOrderPersister 和 KitchenNotifier。它们每个都有一个 onMessage(Message msg) 方法,其中包含订单的详细信息。一个将它保存到数据库,另一个将它添加到屏幕或通过文本到语音在厨房里大喊大叫,等等。

这样做的好处是发帖人不需要知道有哪些订阅者以及有多少订阅者在等待消息。因此,如果您希望后台的 NewOrderCOunter 在线统计所有者今天赚了多少钱,或者添加一个“FreanchFiresOrderListener”以在深煎锅附近进行特殊显示,则其余部分无需更改应用。他们只是订阅了该主题。

关于Java:在 SQL 数据库中对事件执行某些操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3051315/

相关文章:

java : convert string value to int

java - 如何使用 Geoserver 部署现有的 REST 服务

mysql - 当 ' repair table ' 查询在 mysql 中不起作用时该怎么办?

java - 获取不同类型的变量

java - 是否可以在 IntelliJ 中标记代码?

javascript - SQL 查询生成器 Javascript 用户界面

mysql - 获取每个项目每年相似项目的数量

mysql - SQL - 当在另一列中发现重复值时过滤另一列

mysql - 具有不同公共(public)端口的服务器会影响mysql吗?

php - PHP 脚本中的 Select 语句