问题描述
我想使用Spring和Java8通过剩余端点从内存中的H2数据库检索数据。我有2个端点:一个端点检索数据,第二个端点向数据库添加数据。
如何以最简单的方式实现以下所述?我不确定关于JMS Queue或CompletableFuture的解决方案会更好(如果可能)。该功能只适用于少数用户,他们会调用以检索其ID号下保存的数据。
场景:
- 用户调用休息端点以检索数据。
- 如果数据库中存在数据,则将其检索并返回给用户。
- 如果数据库中不存在数据,则保持连接60秒钟,如果在这段时间内数据库中出现某些内容(通过端点添加以添加新数据),则将返回数据。
- 如果数据库中不存在数据,并且60秒之内不会出现新数据,则端点不返回任何内容。
解决方法
有多种方法可以做到这一点,如果需求明确,我建议采用以下两种方法。
方法1:
- 查找并检索是否有可用数据,而无需等待。
- 如果没有可用的数据,请在标头中设置资源ID和retrieveTime,并响应使用者。
- 基于资源ID,您可以随时使用数据。
- 通过这种方式,您可以确保端点服务时间始终保持一致,并且理想情况下,该时间不应超过3秒。
方法2。
- 如果数据不可用,请在60秒内进入休眠状态(不在数据库连接范围内),然后再次尝试使用同一线程。
- 这里不需要任何队列或ansyc进程。
- 在这里您失去的资源和服务时间将花费更多。
除其他方法外,如果您的系统使用事件处理,那么在记录持续存在时使用事件处理方法,然后将事件发送给使用者(所有数据库都具有将事件发送给源系统的功能)。