首页 > 快讯 >

Hystrix请求合并的使用(二)

2023-04-13 03:25:11 来源:腾讯云


【资料图】

步骤4:创建Hystrix请求合并器执行器

接下来,我们将创建一个名为“GetDataCollapserExecutor”的类,该类用于执行Hystrix请求合并器:

@Servicepublic class GetDataCollapserExecutor {    private final ExternalService externalService;    @Autowired    public GetDataCollapserExecutor(ExternalService externalService) {        this.externalService = externalService;    }    @HystrixCollapser(batchMethod = "execute",            collapserProperties = {                    @HystrixProperty(name = "timerDelayInMilliseconds", value = "100")            })    public Future> getData(String key) {        GetDataCollapser getDataCollapser = new GetDataCollapser(externalService, key);        return getDataCollapser.queue();    }    @HystrixCommand    public Map execute(List keys) {        Map resultMap = new HashMap<>();        for (String key : keys) {            GetDataCollapser getDataCollapser = new GetDataCollapser(externalService, key);            resultMap.putAll(getDataCollapser.execute());        }        return resultMap;    }}

如上所述,我们的GetDataCollapserExecutor类包含以下内容:

构造函数:该函数用于注入ExternalService实例。getData()方法:该方法使用@HystrixCollapser注解进行注释,该注解指定了一个名为“execute”的批量执行方法。在此示例中,我们将timerDelayInMilliseconds属性设置为100毫秒,这意味着如果100毫秒内有多个请求,则它们将被合并为单个请求。execute()方法:该方法使用@HystrixCommand注解进行注释,该注解指定了Hystrix请求合并器执行逻辑。在此示例中,我们遍历请求参数列表,并为每个请求创建一个GetDataCollapser实例。最后,我们将所有结果合并到一个HashMap中,并将其返回。

步骤5:测试Hystrix请求合并器

现在,我们可以测试Hystrix请求合并器是否按预期工作。我们将创建一个名为“DataController”的类,并将其用于向客户端公开API:

@RestControllerpublic class DataController {    private final GetDataCollapserExecutor getDataCollapserExecutor;    @Autowired    public DataController(GetDataCollapserExecutor getDataCollapserExecutor) {        this.getDataCollapserExecutor = getDataCollapserExecutor;    }    @GetMapping("/data")    public Map getData(@RequestParam List keys) throws ExecutionException, InterruptedException {        List>> futures = new ArrayList<>();        for (String key : keys) {            futures.add(getDataCollapserExecutor.getData(key));        }        Map resultMap = new HashMap<>();        for (Future> future : futures) {            resultMap.putAll(future.get());        }        return resultMap;    }}

如上所述,我们的DataController类包含以下内容:

构造函数:该函数用于注入GetDataCollapserExecutor实例。getData()方法:该方法使用@GetMapping注解进行注释,该注解指定了API的URL路径和请求方法。在此示例中,我们使用@RequestParam注解将请求参数列表注入方法参数,并使用Future和get()方法来获取Hystrix请求合并器的返回值。

现在,我们可以使用Postman或类似的工具向API发送HTTP请求,并检查是否成功合并了多个请求。例如,我们可以向http://localhost:8080/data发送具有以下查询参数的GET请求:

?keys=key1&keys=key2&keys=key3

这将使用Hystrix请求合并器执行三个请求,并将其结果合并到单个响应中。

步骤6:启动应用程序并测试

现在,我们可以启动应用程序并测试它是否按预期工作。我们可以通过运行以下命令来启动应用程序:

mvn spring-boot:run

应用程序启动后,我们可以使用Postman或类似的工具向API发送HTTP请求,并检查是否已成功使用Hystrix请求合并器合并了多个请求。例如,我们可以向http://localhost:8080/data发送具有以下查询参数的GET请求:

?keys=key1&keys=key2&keys=key3

如果一切正常,我们将看到以下响应:

{    "key1": "Data for key1",    "key2": "Data for key2",    "key3": "Data for key3"}

这表明Hystrix请求合并器已成功执行三个请求并将其结果合并到单个响应中。

上一篇:

以租代售?韩国将向美提供50万发炮弹

下一篇:

最后一页

x
推荐阅读

Hystrix请求合并的使用(二)

以租代售?韩国将向美提供50万发炮弹

“香香”回国后首个“吃播”视频发布!日本粉丝点赞:很想念! 天天最新

资讯:【津云镜头】课后服务减负增效文武兼备精彩纷呈

鸡蛋多少度会冻坏_鸡蛋多少卡路里_世界独家

焦点快报!汪小菲夜会TVB豪门千金被拍,疑有新恋情!女方刚跟台湾老公离婚

丹寨:消防安全检查进网吧

当前简讯:台湾多地沿海现浮尸真相曝光:14人偷渡翻船恐全部罹难

自然资源部:中国沿海海平面变化总体呈波动上升趋势

中国海防董秘回复:列装的声呐装备技术体制属于涉密信息。公司将在符合保密和监管的要求下进行信息披露

「地税印花税怎么算」英超 世界新消息

绿通科技:公司在美国等境外国家/地区销售高尔夫球车具有持续性

世界快播:欧冠-曼城3-0拜仁 哈兰德B席传射 罗德里世界波

贺州瑶绣何以成为联合国的名片? 当前报道

创元科技:4月11日融资净买入162.35万元,连续3日累计净买入275.1万元

三人行公布2022年度分配预案:拟10转增4.5派22元(含税) 环球短讯

美国首都一殡仪馆外发生枪击事件 致1死3伤

如何做到诚实守信

讯息:多家中小银行调降人民币存款利率

分布式系统中跟踪的重要性

图集|灯火阑珊处 夜观滕王阁

“沉寂”十个月后,货基重登“2时代”宝座,消费者可以买了吗?

焦点快看:杭州8分钟

今年春晚没这两人我不看!西安又双叒叕火了

环球精选!潘敏世_关于潘敏世介绍

品小龙虾、看灯光秀,武汉夜游即将上新

中邮二号基金 590002的中邮2号基金是否赎回?

天天报道:红豆薏米粥的作用(红豆薏米粥的功效与作用)

豕是什么意思 逐是什么意思

宁波重点男科有哪些好的【专业男科】-宁波正规男性医院哪些有名

北京市属公园游船、香山公园索道4月11日暂停运营-世界信息

原告不同意法官归纳的争议焦点,法官又不同意更改该怎么办_当前时讯

2023年3月份居民消费价格同比上涨0.7% 环比下降0.3% 每日观点

4月11日Web3.0板块涨幅达3%|今日快讯

“迷倒”黄晓明的叶珂,到底有什么魅力?看完生活照就理解了!

枪支暴力泛滥 今年前100天美国涉枪事件致过万人死亡

面包为什么发酵不起来?

速看!23银行春招国有行第二次模考开始啦! 全球播报

今日热讯:送杜少府之任蜀州赏析题_送杜少府之任蜀州赏析

今日报丨给八十岁老人送什么礼物好

全球聚焦:长春有多少人口大面积2022总数

法国总统马克龙称欧洲必须加强战略自主

4月10日18时新疆阿克苏疫情最新通报及阿克苏疫情一共有多少例-天天快看

天天速读:怎样避孕措施安全_如何避孕 避孕的安全措施有哪些

收评: A股离上涨还差两颗十字星,时间节点或在星期四。

江苏扬州市医保单位缴费率下调2023 灵活医保缴费是多少?-全球头条

深圳坪山红花岭乡土植物步道:体验南亚热带阔叶林风情!

台积电3月营收约1454亿元新台币,同比减少15.4%|世界今热点

手工扯面+秘制辣油 西安饭庄油泼biangbiang面大促:6.66元/盒

莱音珠宝铂金多少钱一克(2023年04月10日)参考价格