簡體   English   中英

Vert.x:如何將 Verticle 隔離到專用事件循環?

[英]Vert.x: how to isolate a verticle to dedicated event loop?

在我的 java 應用程序中,我使用vertx-web 3.9.3創建一個 web 服務器來托管 web 應用程序和一些 rest api 端點。 網絡應用程序是關鍵任務,然而,其余的 api 只是一個很好的選擇。

因此,我將 web-app 和 rest api 部署為兩個 verticles - 每個在不同的端口上啟動一個單獨的 http 服務器,希望它們之間有明確的分離,以便如果 rest api 出錯,例如掛起事件循環線程,它不會影響我的關鍵任務網絡應用程序。

事實證明並非如此。 在我看來,我無法控制將哪個事件循環分配給給定的 Verticle。 盡管在分配事件循環時似乎有一個循環策略,但如果有足夠多的頂點,其中一些最終將開始共享相同的事件循環(以我無法確定的方式控制)。

在 vertx 中是否可以將 verticle 保持在孤立的環境中? 再創建一個Vertx實例可以嗎,會不會實現分離?

您可以在同一進程中創建多個 Vert.x 實例。

在大多數情況下,雖然為要部署的頂點數量創建足夠的事件循環更簡單:

vertxOptions.setEventLoopPoolSize(size);

如果您絕對需要保證其余 api 部分不會對網絡應用程序造成任何問題,那么我建議將它們放在單獨的進程中。 在同一 JVM 中運行時,共享事件循環是一種可能的干擾問題,但還有其他問題,例如共享內存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM