首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vertx :在eventloop之外运行代码块

Vertx :在eventloop之外运行代码块
EN

Stack Overflow用户
提问于 2020-02-10 18:02:04
回答 2查看 187关注 0票数 0

我用Vertx写了一个服务。我的服务运行如下函数:

代码语言:javascript
复制
router.get("/report").handle(ServiceHandler::Count);

我的Count函数需要很长时间(大约10到15分钟),这打破了Vertx的黄金法则。我是新手,我试过用谷歌搜索,但我找不到出路。

请帮帮我!非常感谢。

EN

回答 2

Stack Overflow用户

发布于 2020-02-10 21:16:52

在这种情况下,请使用blocking handler

代码语言:javascript
复制
router.get("/report").blockingHandler(ServiceHandler::Count);

请注意,默认情况下,即使是工作线程也会受到阻塞线程检查器的监视。60秒后,会为被阻止的工作进程生成警告。

如果处理需要几分钟时间,请相应地调整setMaxWorkerExecuteTimesetMaxWorkerExecuteTimeUnit

票数 1
EN

Stack Overflow用户

发布于 2020-02-14 18:34:41

如果处理时间超过1分钟,一般不应该让它从http-request通过router运行。

您的ServiceHandler::Count函数应该立即返回一条“流程已启动”消息,并使用一些长期运行的机制,如SockJS或good-ol电子邮件来通知用户完成。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60147933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档