n a*_*n a 2 java mysql sql events
我正在构建一个具有分布式部件的应用程序。意思是,虽然一部分(作者)可能会插入、更新信息到数据库,但另一部分(读者)正在读取该信息并对其采取行动。
现在,我希望在读取器中触发一个动作事件,并在我从写入器插入某些内容时从数据库重新加载信息。
有没有一个简单的方法呢?
这是个好主意吗?:
// READER
while(true) {
connect();
// reload info from DB
executeQuery("select * from foo");
disconnect();
}
Run Code Online (Sandbox Code Playgroud)
这是一个餐厅销售点系统。
每当收银员将订单输入数据库时 - 厨房中的应用程序就会收到通知。这是您在麦当劳看到的那种系统。
应用程序不需要以任何方式连接。但是每个部分都将连接到单个 mySQL 服务器。
而且我相信我希望立即收到通知。
您可能会考虑在您的应用程序中设置一个嵌入式 JMS 服务器,我会推荐 ActiveMQ,因为它非常容易嵌入。
对于您想做的事情,JMS 主题非常适合。当收银员输入订单时,订单不会写入数据库,而是写入主题的消息中,我们将其命名为 newOrders。
该主题有 2 个订阅者:NewOrderPersister 和 KitchenNotifier。这些将每个都有一个 onMessage(Message msg) 方法,其中包含订单的详细信息。一个将它保存到数据库中,另一个将它添加到屏幕上或通过文本到语音的厨房大喊大叫,等等。
这样做的好处是发布者不需要知道有哪些订阅者以及有多少订阅者在等待消息。因此,如果您希望后台有一个 NewOrderCOunter 来在线计算所有者今天赚了多少钱,或者添加一个“FreanchFiresOrderListener”以在煎锅附近有一个特殊的显示,则其余部分无需更改应用。他们只是订阅该主题。