问题标签 [deferred-result]

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.

0 投票
0 回答
635 浏览

asynchronous - 是否可以通过浏览器调用运行 AsyncWebRequest?

我正在使用 Spring Boot 1.4。

当我尝试使用 gatling 运行 500 呼叫时,我会在一段时间后收到此错误:

我找不到有关此类错误的任何信息。我试图使用 gatling 来运行测试。可能是这个问题吗?因为我想如果我要正确使用 aDeferredResult我需要使用支持异步的客户端。

0 投票
0 回答
46 浏览

java - 处理 N 个请求后,异步 API 被阻塞

我使用 Spring MVC 在 Scala 中开发了一个简单的异步 API。在我使用的控制器DeferredResult<Map<String,Integer>> response = new DeferredResult<>(360000L,new String("PROCESSING_TIMEOUT"));中,以便PROCESSING_TIMEOUT在处理时间过长的情况下返回消息。然后,为了测试这个 API,我同时发送了 100 个请求。问题是,在成功处理了大约 50 个第一个请求后,程序被阻塞并等待 360000 毫秒,然后返回消息PROCESSING_TIMEOUT,并继续处理其余请求。然后它再次被阻塞并在 360000 毫秒内解除阻塞。我不明白这种行为。为什么会这样?以及如何解决?我尝试使用核心池大小和最大池大小参数,但并没有解决问题。

0 投票
0 回答
3928 浏览

java - Spring DeferredResult 超时

我有一个可观察的,因为它可能需要很长时间我才能返回 spring 的DeferredResult

这是我正在使用的控制器逻辑:

这是我的测试用例:

当我在没有设置超时的情况下实例化 DeferredResult 时,此测试失败,因为它使用为休息模板设置的通用超时(10 秒)。如果我明确设置超时new DefferredResult(Long.MAX_VALUE),它会失败并出现相同的异常:

那么应该如何配置超时或哪里有问题?

0 投票
1 回答
259 浏览

spring - 发布授权 Spring 异步控制器响应

我有一个带有 GET 方法的 REST 控制器。它返回一个资源。owner我想通过将字段Resource与授权用户的登录名进行比较来验证资源是否属于授权用户。对于正常的同步请求,我会做这样的事情:

但是如果控制器方法是异步的(用 实现DeferredResult)呢?

界面AService如下所示:

Resource类是一个简单的 DTO :

在第二个示例中,Spring Security 很自然地寻找实例ownerLogin上的字段DeferredResult。我希望它将异步解析Resource视为SPEL 表达式returnObject中的。@PostAuthorize

可能吗?也许有人可以建议一种替代方法?欢迎任何建议。

0 投票
1 回答
167 浏览

spring - Backpressure in a Spring DeferredResult + Akka actors application

I am thinking of using a chain of Akka workers to model a workflow inside a DeferredResult based Spring MVC web application. Essentially the controller will return a DeferredResult and the actors in the chain will work to populate a CompletableFuture which feeds the DeferredResult when completed.

What I am not able to figure out is:
* Will Akka exert back-pressure if this setup takes on too much load.
* If so, how can I detect that this is happening?

0 投票
0 回答
813 浏览

spring-mvc - AsyncHandlerInterceptor - 客户端关闭时未调用 ASYNC 调度程序请求

好吧,这是一种异常行为,是我们的用例所需要的。我们正在使用处理程序拦截器在“preHandle”方法中“增加活动请求计数”。在“afterCompletion”方法中,我们减少活动请求计数器。到目前为止,一切都很好。同步调用是直截了当的。但是在异步的情况下,有第二个请求(DispatcherType:ASYNC)用于减少计数器,而主请求(DispatcherType:REQUEST)用于增加计数器。我们检查调度程序类型以避免双重增量。到目前为止一切顺利。

如果某些有问题的客户端在触发请求后断开连接,则会出现问题。在这种情况下,当主请求进入服务器但在异步线程启动之前客户端断开自身(如关闭浏览器)。在这种情况下,第二个请求(DispatcherType:ASYNC)根本没有被创建。这种情况使计数器增加(由主请求)。 对于我们的用例,我们必须减少计数器,无论它是否为请求增加。 在这里期待您的帮助/建议。提前致谢。

其他细节: Spring Boot 应用 Spring framework: 4.3.4.RELEASE Tomcat : 7 Using RestController Handler Interceptor: AsyncHandlerInterceptor 在异步模式下我们使用 ResponseBodyEmitter 向客户端发送数据

登录服务器:

更新: 在进一步的研究中,我在 spring 文档中发现了这一点......“请注意,当异步请求超时或因网络错误而完成时,HandlerInterceptor 实现可能需要工作。对于这种情况,Servlet 容器不会调度,因此 postHandle _ _ 这个 deferredResultInterceptor 似乎解决了这个问题。

0 投票
1 回答
1492 浏览

java - 测量异步方法的执行时间

我有异步方法,我使用 DeferredResult 作为返回类型。我想为那个方法编写junit测试,我在循环中调用这个方法,例如100次,我需要测量每次调用该方法的执行时间。

这是方法示例:

创建了 deferredResult 我添加到集合中,并在另一个方法中迭代该集合,在该方法中设置了一些结果,然后返回 dr。

你能告诉我应该如何测试我将能够测量该方法的多次调用的执行时间吗?

谢谢。

0 投票
1 回答
523 浏览

spring - 拦截器跟踪 MDC 中的并发问题

我有以下拦截器,它基于为每个请求保存和恢复存储在 MDC 上下文中的一些变量来跟踪请求/响应。

我认为我会遇到并发问题,因为上下文是一个实例变量,并且在运行多个并发线程时保存和恢复 MDC 上下文会导致错误的结果。同样使用 synchronize 关键字会增加性能问题。我想知道当弹簧控制器返回 DeferredResult 时是否有更好的方法来跟踪 MDC 上下文。

谢谢

0 投票
1 回答
632 浏览

java - 等待返回 DeferredResult 的方法

我有DefferedResult<Foo>在几秒钟内返回的服务方法,但我需要我的代码将等到该方法完成并返回带有设置结果的延迟结果。

这是示例代码:

我想在另一个服务中调用它:

你能告诉我如何确保这种行为吗?谢谢你的建议。

0 投票
0 回答
2284 浏览

multithreading - spring 控制器中的 Thread.sleep

我正在研究他们Thread.sleep在控制器中的旧系统。这里的场景是,一旦收到请求,它就会轮询另一个服务,直到满足条件。这里的问题是请求处理线程因为轮询而被阻塞

我正在尝试将其替换为DeferredResult避免阻塞并使用基于回调的方法。轮询将在一个单独的线程中进行,一旦完成setResult将被调用并向用户提供响应。

使用 DeferredResult 进行间隔轮询真的有意义吗?负载对性能有影响吗?

这是代码:

我试图改进的是基于这个例子