检索数据并等待时间以检查数据库中是否出现了新内容

问题描述

我想使用Spring和Java8通过剩余端点从内存中的H2数据库检索数据。我有2个端点:一个端点检索数据,第二个端点向数据库添加数据。

如何以最简单的方式实现以下所述?我不确定关于JMS Queue或CompletableFuture解决方案会更好(如果可能)。该功能只适用于少数用户,他们会调用以检索其ID号下保存的数据。

场景:

  1. 用户调用休息端点以检索数据。
  2. 如果数据库中存在数据,则将其检索并返回给用户
  3. 如果数据库中不存在数据,则保持连接60秒钟,如果在这段时间内数据库中出现某些内容(通过端点添加添加新数据),则将返回数据。
  4. 如果数据库中不存在数据,并且60秒之内不会出现新数据,则端点不返回任何内容

解决方法

有多种方法可以做到这一点,如果需求明确,我建议采用以下两种方法。

方法1:

  1. 查找并检索是否有可用数据,而无需等待。
  2. 如果没有可用的数据,请在标头中设置资源ID和retrieveTime,并响应使用者。
  3. 基于资源ID,您可以随时使用数据。
  4. 通过这种方式,您可以确保端点服务时间始终保持一致,并且理想情况下,该时间不应超过3秒。

方法2。

  1. 如果数据不可用,请在60秒内进入休眠状态(不在数据库连接范围内),然后再次尝试使用同一线程。
  2. 这里不需要任何队列或ansyc进程。
  3. 在这里您失去的资源和服务时间将花费更多。

除其他方法外,如果您的系统使用事件处理,那么在记录持续存在时使用事件处理方法,然后将事件发送给使用者(所有数据库都具有将事件发送给源系统的功能)。