0

在我的 java 应用程序中,我使用vertx-web 3.9.3创建一个 Web 服务器,用于托管一个 Web 应用程序和一些 REST API 端点。Web 应用程序是关键任务,但是,其余的 api 只是一个不错的选择。

因此,我将 web-app 和 rest api 部署为两个 verticles - 每个都在不同的端口上启动一个单独的 http 服务器,希望它们之间有一个明确的分隔,以便如果 rest api 出错,例如挂起事件循环线程,它不会影响我的关键任务网络应用程序。

事实证明并非如此。在我看来,我无法控制将哪个事件循环分配给给定的verticle。虽然在分配事件循环时似乎有一个循环策略,但如果有足够的 Verticle,它们中的一些最终将开始共享同一个事件循环(以我无法确定性控制的方式)。

在vertx中是否可以将一个verticle保持在一个孤立的环境中?是否可以再创建一个 Vertx 实例,是否可以实现分离?

4

1 回答 1

2

您可以在同一进程中创建多个 Vert.x 实例。

在大多数情况下,尽管为要部署的 Verticle 数量创建足够的事件循环更简单:

vertxOptions.setEventLoopPoolSize(size);

如果您绝对需要保证其余 api 部分不会对 web 应用程序造成任何问题,那么我建议将它们放在单独的进程中。在同一个 JVM 中运行时,共享事件循环是一种可能的干扰问题,但还有其他问题,例如共享内存。

于 2020-09-23T08:27:12.100 回答