首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java应用程序每天只调用外部API 4次的最佳方法(考虑夏时制)

Java应用程序每天只调用外部API 4次的最佳方法(考虑夏时制)
EN

Stack Overflow用户
提问于 2021-05-15 07:26:54
回答 1查看 162关注 0票数 0

我们在两个生产服务器上运行一个Java后端服务,每个服务器中有两个JVM,在Websphere Application Server中的负载均衡器后面。

我的用例:

  • 在部署后第一次调用外部API .
  • 如果Response.OK
    • 在外部数据存储中缓存响应(与此
    • 无关)

对于当天的下一个客户机请求,如果请求的时间不等于一组时间(9:00、11:00、13:00、15:00),则返回缓存的response。

如果客户端请求恰好位于集合中的任何给定时间(9:00、11:00、13:00、15:00),则

  • 调用外部API和更新缓存(与此无关)。,请求在9:00

上提供。

从9:00到10:59之间所有后续请求的response

  • (因为下一次在集合中是11:00)
    • 返回缓存的

11:00调用外部API并更新cache的

  • 等等.

通过这种方式,一天中只有四个对外部API的请求,而不是对每个请求直接调用

如何在Java的应用程序级别跨所有生产服务器实现这一点,在没有任何网络或IO编程的情况下,计算特定时区的夏时制时间?

注意:应用程序不使用Spring引导。我试图完全用Java来做这件事。

EN

回答 1

Stack Overflow用户

发布于 2021-05-16 15:27:29

因为您使用的是JEE应用服务器,如果可能的话,您应该使用符合规范的方法来提供最大的可移植性。你没有在你的帖子中提到你是在使用自由还是传统的WebSphere。

如果您使用的是自由,一种与JEE规范兼容的管理异步任务的方法是ManagedScheduledExecutorService。If提供调度功能,并为您处理线程。从以下信息开始:https://www.ibm.com/docs/en/was-liberty/base?topic=manually-configuring-managed-scheduled-executors

如果您使用的是传统的JEE支持级别,则在JEE托管环境中,提供的JEE支持级别没有符合规范的处理异步任务的方法。您可以使用符合JSE规范的ScheduledExecutorService,但与托管版本不同的是,它不适合在应用服务器env中使用,因为您希望服务器能够为您管理所有资源(如线程)。您将负责线程处理,并且需要考虑在JEE (不是推荐的模式)中使用非托管线程的含义。为了避免这种情况,您可以使用这里描述的WebSphere Scheduler服务:https://www.ibm.com/docs/en/was/9.0.5?topic=calendars-scheduler

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67544279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档