如何不断检查拍卖网站的时间是否到了



我正在做一个项目,我们正在创建一个每周工作的拍卖网站。计划从周一开始所有拍卖,到周五结束。

到目前为止,我已经发现我需要一个保存开始和结束日期的数据库,这样我就可以检查还剩多少时间等等。但我需要能够不断检查,看看时间是否到了,我不知道如何继续。做这件事的正确方法是什么?

我们将Java8与Spring一起使用,并作为前端进行react。

两种解决方案:

  1. 使用websocket,服务器设置一个周五到期的计时器,一旦计时器到期,将事件发送到客户端
  2. 客户端也做定时器

这里有三层:

  1. 前端(React(
  2. 后端(Java8/Spring应用程序(
  3. 数据库

现在您需要弄清楚如何在这些层之间传播数据。

从后端到前端的传播可以使用轮询或websocket来完成。

从数据库到后端的传播可以使用轮询或数据库触发器来完成。

我个人会通过网络套接字将React与Spring App连接起来。然后,我将有一些后台任务轮询数据库,并将发现的更改推送到连接的websocket客户端。

以下是Springs自己的websocket教程https://spring.io/guides/gs/messaging-stomp-websocket/

我认为您正在寻找一个pull模型。基本上,Java应用程序需要每隔一段时间从数据库中提取结束日期。你可以为此写一个cron作业。Quartz-cron是流行的基于Java的框架之一http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html。它还处理分布式系统。因此,如果您的应用程序有多个实例,Quartz可以为您覆盖它。

pull模型中的另一个变体,您可以在JVM本地缓存或其他缓存(Redis、Memcache(中读取带有结束日期的条目&对此运行cron。但您必须保持缓存和数据库的一致性。

您选择哪一个取决于您的业务用例(结束日期更改的频率,您需要检查结束日期的频率等(。

另一种选择是采用推送模式。但在这种情况下,推送模型无法与传统数据库一起工作。

可能的选项-是扩展org.springframework.web.servlet.handler.HandlerInterceptorAdapter
并在该类中编写根据您的时间范围检查当前时间的逻辑-如果检查失败则抛出异常。潜在的优化-从数据库缓存值(至少一段时间,例如-15分钟(,因为这将有助于减少对数据库的实际调用次数

最新更新