java 长轮询_java – Spring中的长轮询
我们有一个独特的案例,我们需要与外部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中的长轮询相关推荐
- java di是什么_java spring中DIP是什意思?DI的含义是什么?
在科学技术水平不断进步发展的今时今日,各种新兴软件不断涌现,这也刺激了人们对于新技术学习的欲望.学习java的人也越来越多.今天就来为大家介绍一些基础知识,也就是java中DIP是什意思以及DI的含义 ...
- java的abstract的意思_java – spring中的abstract =“true”是什么意思?
Spring中的抽象bean有点不同于抽象类.事实上,Spring中的抽象bean甚至不需要映射到任何类.以此为例: 和类: public class FooDao { private DataSou ...
- Java私有方法解释_java接口中 定义 private 私有方法
在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法.只允许我们定义public访问权限的方法.抽象方法或静态方法.但是从Java 9 开 ...
- python求字符串中出现的第一个最长重复子串(如banana中最长重复子串为ana)
#字符串中出现的第一个最长重复子串 class commonsubstring():def maxlen(self,s1,s2): #最长公共子串的长度for i in range(min(len(s ...
- java ldap操作实例_Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法...
java ldap操作实例 LDAP身份验证是世界上最流行的企业应用程序身份验证机制之一,而Active Directory (Microsoft为Windows提供的LDAP实现)是另一种广泛使用的 ...
- java实体中文字段_java - Spring JPA实体类是否可以包含不在数据库表中的非数据库字段 - SO中文参考 - www.soinside.com...
我在SpringBoot中使用Spring JPA和Spring Data Rest.我有一个称为用户的数据库表和该表的实体.我没有此应用程序的控制器.@Entity @Table(name = &q ...
- Java变长数组笛卡尔积_Java 8中的流作为流的笛卡尔积(仅使用流)
小编典典 在示例中传递流永远比传递列表更好: private static Stream cartesian(BinaryOperator aggregator, List... lists) { . ...
- java 多线程bean 注入_java多线程中注入Spring对象问题
信息加密之Base64 Base64是一种最简单的简单的加密形式,经常被使用,记录一下,以便日后可以深入了解. jdk格式: //获得密钥Base64Encoder encoder = new Bas ...
- java 注解去掉缓存_java spring 使用注解来实现缓存
这里举例使用spring3.1.4 + ehcache 注解的方式使用cache 是在spring3.1加入的 使用方法: 1.ehcache依赖+spring依赖 net.sf.ehcacheehc ...
最新文章
- FPGA的设计艺术(17)如何搭建一个简易的逻辑测试平台?
- Day03——Python函数
- 目前计算机辅助数控编程的方法,数控编程试题(附自己整理的答案)
- Detection and Classification of Acoustic Scenes and Events(DCASE2013详细介绍)
- 芒果TV会员,月卡最低9.9元,年卡最低128元!
- 一个超轻量级工作流引擎:Workflow-Core
- 那些在家啃书自学算法的人,最后都找到工作了吗?
- 腾讯开源视频动作检测算法DBG,打破两项世界纪录!
- ASP.NET Core和Blazor Code Venture:配置Azure AD身份验证
- 校招真题练习009 配比(京东)
- layui 表单验证案例
- 明解c语言中级篇微盘,明解C语言:中级篇
- Internet信息服务(IIS)管理器--IIS部署发布网站
- CMSInitiatingOccupancyFraction计算释疑
- 将英汉词典数据库放入MySQL数据库中,并将数据库中“以A开头的单词”显示在JSP网页上
- 大数据发展趋势之我见
- ice服务器修复指令,ICEEXT0.67指令中英文说明[翻译]
- mysql 1058 无法启动服务_案例:MySQL服务无法启动 系统发生1058错误
- [渝粤教育] 西安建筑科技大学 技术经济学 参考 资料
- 字母异位词分组-LeetCode49
热门文章
- php ping主机名,PHP PING值函数
- linux mint 安装php,使用apt-get方式为Linux Mint 13安装PHP+MYSQL+Apache
- 熊猫python_Python库-------熊猫
- arm 架构_Arm架构之Arm内核解析
- 电子工程师,学会阅读Datasheet很重要!
- python做什么项目好_推荐两个牛逼的Python项目
- java opencv人脸识别_java+opencv+intellij idea实现人脸识别
- unity实现图片轮播效果_Unity3D实现列表拖拽轮播分页滚动功能
- python中的字典推导式_17.python 字典推导式(经典代码)
- Animator动画XML实现