问题标签 [asyncresttemplate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 需要添加对 ListenableFuture 的响应>
我有这个代码:
其他人需要创建我正在调用的端点。但请记住,我需要添加一个“模拟响应”,并ResponseEntity<byte[]>
尝试覆盖响应,但仍然无法使其正常工作。知道我能做什么吗?或者如何发送虚假回复?
java - 我应该让我的 REST 客户端 API 库异步(Java 8)
我正在为我们的 REST 服务器创建客户端库。对于 C# 库,我使用HttpClient.PostAsync()效果很好,它返回一个对象,调用者可以等待(使其同步),他们可以完成一些其他操作然后等待,或者他们可以使用 C# 等待机制. 很好的解决方案。
对于 Java,我必须为 Java 8 编写库,因为这是使用最多的版本。使用 Java 8,我们覆盖了 98% 的程序员。(如果我们有足够的需求,我也会做一个 Java 11 的,然后我们会有本机异步调用。)
所以这是我的问题,有一些方法可以获得异步行为,或者使用 DeferredResult 或一些 3rd 方类。但是我围绕这个构建我的 API 并强制它有什么好处吗?因为如果我创建一个同步 API,调用者仍然可以在他们自己的 DeferredResult 代码中调用它。这是相同的最终结果。
所以在我看来,提供一个简单直接的 API 的方法是提供一个同步的。而那些想要异步的人将其包装在他们喜欢使其异步的任何机制中。这里的一个重要优势是我不会强制使用他们不使用的机制或 3rd 方库。
这种方法有什么缺点吗?
更新:这里更详细。
如果我只有一个同步 API,那么调用者可以用许多不同的方式包装我的同步 API 。最简单的使用 vanilla Java 8 是:
相反,如果我创建一个异步 API,那么我将选择这些方法中的哪一种(我将使用 CompletableFuture),因此 API 变为:
当然,使用异步 API 会更容易一些。但差别很小。不利的一面是我现在对它们强制使用异步方法。我是否错过了提供异步 API 的更大优势?
mongodb - Spring Boot 控制器防止在 mongodb 中快速连续请求时多次插入
我有一个 REST API 可以根据请求计算某些内容,如果再次发出相同的请求,则从缓存中返回结果,缓存中包含保存在 MongoDB 中的文档。要知道两个请求是否相同,我正在对请求中的一些相关字段进行哈希处理。但是,当快速连续发出相同的请求时,MongoDB 中会出现重复的文档,当我尝试读取它们时会导致“IncorrectResultSizeDataAccessException”。
为了解决这个问题,我尝试在以下控制器方法中同步哈希值(尝试删除不相关的部分):
我确信没有发生哈希冲突,它只是在快速连续执行相同的请求时发生重复记录。据我了解,只要我的 Spring Boot 应用程序只有 1 个正在运行的实例,就不会发生这种情况。除了生产中运行的多个实例之外,您还有其他原因吗?
spring-boot - 使用 webclient 和 @Async 异步调用 rest 客户端的区别
我打算异步调用 Web 休息端点。我应该使用 webclient 进行所有异步调用吗?或者我可以使用rest模板并用@Async注释方法。它是否仍会被异步调用。
观察 webclient 和 @async with rest 模板之间的区别。
java - 如何在循环中调用rest API
我想使用 RestTemplate 多次调用第三方 API(对于我必须调用 REST API 的每个客户 ID),目前我已经编写如下,它工作正常,但它需要时间,因为有很多客户我会调用 API对于每个客户 ID,有什么办法可以使这个并行。