当前位置: 首页 > 知识库问答 >
问题:

Java中主源到辅助源的超时切换

养焱
2023-03-14

我正在开发一个依赖于两个第三方数据源的应用编程接口——一个是SOAP应用编程接口(主要源),另一个是mssql数据库(次要源)。问题是这两个源不稳定,这影响了生态系统中的应用编程接口和其他应用编程接口,因为有很多线程等待响应很长时间(它的拍摄JVM内存)。我想有一个实现,在一定时间后超时主数据源,如果没有响应,切换到辅助源,等待响应,直到超时到达,否则显示一些错误响应。

我已经浏览了Java并发API。并找到了一个使用ExecutorService#提交(可调用)的解决方案,它返回一个Future,它有一个Future#get(5,TimeUnit. SECONDS)方法,该方法将阻塞,直到超时。

  1. 对于这样的关键资源,是否建议使用此功能

谢啦

共有1个答案

毛声
2023-03-14

事实上,ExecutorService是这里的正确选择。

ExecutorService#submit(可调用)返回一个未来,它有一个未来#get(5,TimeUnit.SECONDS)

尝试和测试。工作很有魅力。

 类似资料:
  • 我知道如何使2个数据源,但哪里是最好的地方,以处理逻辑什么时候它将使用哪一个。逻辑需要这样运行: 连接到主 如果存在连接问题,或者资源不可用,或者连接超时,请尝试重新连接到主服务器。 如果主服务器无法连接,请尝试连接到辅助服务器 如果辅助设备无法连接,请继续重试步骤2和步骤3,持续X分钟。 在Spring服务中处理这个问题是最好的/可能的吗?我应该有一个不同的服务来处理这个逻辑,而我的其他服务使用

  • 6.5 源程序的辅助说明伪指令 除了以上一些使用率较高的伪指令外,还有一些使用频率不太高的其它伪指令。下面仅列举几个这样的伪指令。 6.5.1 模块名定义伪指令NAME 模块名定义伪指令NAME说明该源程序的模块名。该伪指令的一般格式如下: NAME [模块名字符串] 6.5.2 页面定义伪指令PAGE 在源程序的开始,可用伪指令PAGE说明每页的最大行数、每行的字符数。该伪指令的一般格式为: P

  • 我正在使用Spring Boot gradle插件构建一个可执行的war。我有一个好消息来源。src/main/resources中的java类来定位文件: 当我执行gradle构建时,我得到一个错误,即类FindResource无法解析。我是否需要Spring Boot gradle插件,它还应该使用resources目录中的类。我该怎么做? 我的身材。gradle如下所示:

  • 问题内容: 如何解决这个错误? 它在执行以下程序期间发生: 我的文件包含以下内容: 问题答案: 供将来参考,此异常的更常见原因之一是Java Access Bridge的 安装丢失或损坏。在这种情况下,已在标准配置文件()中定义了以下访问桥: 但是,除非完成所需的安装,否则它实际上不会起作用。请注意,SDK 不 附带标准访问桥实现。要解决您的特定问题,请按照其设置页面中的说明下载并安装Oracle

  • 我希望能够在 PhpStorm 中快速切换到代码编辑器窗口。我发现了“跳转到源代码”热键,但它的工作方式是这样的:如果我在目录树中选择了一些文件夹(“项目”,在左侧),并且我使用热键(默认为),我不会被切换。此外,如果在目录树中选择了其他文件,我将切换到所选文件的代码。但是,我只想使用鼠标单击编辑器字段。只需切换即可。

  • 问题内容: 我遇到过几次被称为辅助对象的人…谁能详细说明这些辅助对象是什么,为什么我们需要它们? 问题答案: 几个类共有的一些操作可以移到辅助类,然后通过对象组合使用: 可以通过多种方式使用帮助程序类: 直接实例化它们(如上所述) 通过依赖注入 通过制作它们的方法并以静态方式访问它们,例如关闭所有抛出异常的方法。 至少我的约定是只使用静态方法而不是依赖项来命名类,而具有依赖项的类/需要由DI容器进