我们有一个独特的案例,我们需要与外部API接口,这需要我们长时间轮询他们的端点以获得他们所谓的实时事件.

问题是我们可能有多达80,000人/设备在任何给定时间点击此端点,监听事件,每个设备/人1个连接.

当客户端从我们的Spring服务发出请求以对事件进行长轮询时,我们的服务随后会对外部API进行异步调用以对事件进行长轮询.外部API已定义最小长轮询超时可设置为180秒.

所以在这里我们遇到一个带队列的线程池不能工作的情况,因为如果我们有一个类似于(5分钟,10个最大值,10个队列)的线程池,那么10个线程可能会成为焦点,并且队列中的10个将无法获得机会,直到当前10个中的一个完成.

我们需要服务它或者失败它(我们将把负载平衡器等放在它后面),但是我们不希望在没有实际轮询的情况下让客户端挂起.

我们一直在研究如何使用DeferredResult,并从控制器返回.

一些调整的东西

@RequestMapping(value = "test/deferredResult",method = RequestMethod.GET)

DeferredResultCompletableFuture.supplyAsync(() -> testService.test()).whenCompleteAsync((result,throwable) -> deferredResult.setResult(result));

return deferredResult;

}

我在质疑我是否在正确的道路上,并且我是否应该为CompletableFuture.supplyAsync()方法提供执行程序和什么样的执行程序(和配置)以最好地完成我们的任务.

我已经阅读了各种文章,帖子等,我想知道是否有人知道可能有助于我们的具体情况.

java 长轮询_java – Spring中的长轮询相关推荐

  1. java di是什么_java spring中DIP是什意思?DI的含义是什么?

    在科学技术水平不断进步发展的今时今日,各种新兴软件不断涌现,这也刺激了人们对于新技术学习的欲望.学习java的人也越来越多.今天就来为大家介绍一些基础知识,也就是java中DIP是什意思以及DI的含义 ...

  2. java的abstract的意思_java – spring中的abstract =“true”是什么意思?

    Spring中的抽象bean有点不同于抽象类.事实上,Spring中的抽象bean甚至不需要映射到任何类.以此为例: 和类: public class FooDao { private DataSou ...

  3. Java私有方法解释_java接口中 定义 private 私有方法

    在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法.只允许我们定义public访问权限的方法.抽象方法或静态方法.但是从Java 9 开 ...

  4. python求字符串中出现的第一个最长重复子串(如banana中最长重复子串为ana)

    #字符串中出现的第一个最长重复子串 class commonsubstring():def maxlen(self,s1,s2): #最长公共子串的长度for i in range(min(len(s ...

  5. java ldap操作实例_Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法...

    java ldap操作实例 LDAP身份验证是世界上最流行的企业应用程序身份验证机制之一,而Active Directory (Microsoft为Windows提供的LDAP实现)是另一种广泛使用的 ...

  6. java实体中文字段_java - Spring JPA实体类是否可以包含不在数据库表中的非数据库字段 - SO中文参考 - www.soinside.com...

    我在SpringBoot中使用Spring JPA和Spring Data Rest.我有一个称为用户的数据库表和该表的实体.我没有此应用程序的控制器.@Entity @Table(name = &q ...

  7. Java变长数组笛卡尔积_Java 8中的流作为流的笛卡尔积(仅使用流)

    小编典典 在示例中传递流永远比传递列表更好: private static Stream cartesian(BinaryOperator aggregator, List... lists) { . ...

  8. java 多线程bean 注入_java多线程中注入Spring对象问题

    信息加密之Base64 Base64是一种最简单的简单的加密形式,经常被使用,记录一下,以便日后可以深入了解. jdk格式: //获得密钥Base64Encoder encoder = new Bas ...

  9. java 注解去掉缓存_java spring 使用注解来实现缓存

    这里举例使用spring3.1.4 + ehcache 注解的方式使用cache 是在spring3.1加入的 使用方法: 1.ehcache依赖+spring依赖 net.sf.ehcacheehc ...

最新文章

  1. FPGA的设计艺术(17)如何搭建一个简易的逻辑测试平台?
  2. Day03——Python函数
  3. 目前计算机辅助数控编程的方法,数控编程试题(附自己整理的答案)
  4. Detection and Classification of Acoustic Scenes and Events(DCASE2013详细介绍)
  5. 芒果TV会员,月卡最低9.9元,年卡最低128元!
  6. 一个超轻量级工作流引擎:Workflow-Core
  7. 那些在家啃书自学算法的人,最后都找到工作了吗?
  8. 腾讯开源视频动作检测算法DBG,打破两项世界纪录!
  9. ASP.NET Core和Blazor Code Venture:配置Azure AD身份验证
  10. 校招真题练习009 配比(京东)
  11. layui 表单验证案例
  12. 明解c语言中级篇微盘,明解C语言:中级篇
  13. Internet信息服务(IIS)管理器--IIS部署发布网站
  14. CMSInitiatingOccupancyFraction计算释疑
  15. 将英汉词典数据库放入MySQL数据库中,并将数据库中“以A开头的单词”显示在JSP网页上
  16. 大数据发展趋势之我见
  17. ice服务器修复指令,ICEEXT0.67指令中英文说明[翻译]
  18. mysql 1058 无法启动服务_案例:MySQL服务无法启动 系统发生1058错误
  19. [渝粤教育] 西安建筑科技大学 技术经济学 参考 资料
  20. 字母异位词分组-LeetCode49

热门文章

  1. php ping主机名,PHP PING值函数
  2. linux mint 安装php,使用apt-get方式为Linux Mint 13安装PHP+MYSQL+Apache
  3. 熊猫python_Python库-------熊猫
  4. arm 架构_Arm架构之Arm内核解析
  5. 电子工程师,学会阅读Datasheet很重要!
  6. python做什么项目好_推荐两个牛逼的Python项目
  7. java opencv人脸识别_java+opencv+intellij idea实现人脸识别
  8. unity实现图片轮播效果_Unity3D实现列表拖拽轮播分页滚动功能
  9. python中的字典推导式_17.python 字典推导式(经典代码)
  10. Animator动画XML实现