Spring轮询与长轮询

时间:2018-03-28 16:13:27

标签: java spring spring-boot long-polling spring-rest

在我的应用程序中,我需要实现一些功能,确保如果客户端发出GET请求,应用程序将保留此请求,直到数据库中发生某些更改,并且还可以设置最大保持时间。 例如:

用户发出GET请求,请求将保持20秒。如果在这20秒内数据库发生了一些变化,应用程序会发布带有所需数据的请求,否则应用程序保持请求20秒。

我决定使用长轮询。在我的应用程序中,我也使用Spring Boot。你能告诉我是否可以用Spring做这件事还是我应该为它添加另一个库?

我还发现Spring Scheluder用于保留某个间隔的请求,但问题是,不允许带有参数的方法使用scheluder,但是我需要特定用户获取数据,因此至少应该传递用户的id。此外,我不确定是否可以在需要时手动释放此Scheluder。

感谢您的建议!

1 个答案:

答案 0 :(得分:0)

对于长拉请求,可以使用DeferredResult。当您返回DeferredResult响应时,请求线程将是空闲的,并且此请求由工作线程处理。这是一个示例:

i

在此请求中,等待10秒后给出响应。如果您等待100秒以上,则会收到超时响应。

看看this