【发布时间】:2011-05-27 18:38:04
【问题描述】:
我有一个锁定方法(ReentrantLock),该方法向服务器发送一些消息,立即接收响应并在数据库中创建/保存数据。 此响应具有已发送消息的 ID。客户端有一个正在等待来自服务器的报告的侦听器(此报告可以在数据发送到服务器后返回),服务器也可以返回某种报告(带有 id 和一些状态),我需要将该报告(按 id)映射到以前保存的记录和该记录的更改状态字段。
问题是这个报告可以更快地返回(并且监听器会抓住它并尝试处理)然后来自第一个方法的消息保存在数据库中。 解决这个问题的方法是什么?
我有想法在数据库中创建额外的表,并将消息中的数据保存在一个表中,并将报告中的数据保存到另一个表中。然后通过其他进程同步它们,但也许可以创建一些缓冲区/队列,其中消息 id 将从第一种方法存储,当我们收到报告时,我们将检查该缓冲区/队列以获取相应的消息 id 以及是否找到该消息id,那么那个报告监听器会继续它的工作吗?
【问题讨论】:
标签: java multithreading concurrency