Вертикаль нескольких экземпляров в vert.x является поточно-ориентированной - PullRequest
0 голосов
/ 30 января 2019

Я понимаю, что в vert.x по умолчанию Verticle будет запускаться в одном и том же цикле событий каждый раз, когда нам не нужно писать потокобезопасность в нашем обработчике.

Например, если у меня запущен VerticleHttpServer -

public class HttpServerVerticle extends AbstractVerticle {
@Override
public void start() throws Exception {
    vertx.createHttpServer().requestHandler(req -> {
        req.response().putHeader("content-type", "text/html").end(" 
    <html><body><h1>Hello from vert.x!</h1></body></html>");
    }).listen(8080);
}

}

Гарантируется, что в любой момент мой обработчик запросов будет вызываться дважды (для 2 разных запросов) в 2 циклах событий.Поэтому мне не нужно заботиться о безопасности потоков в моем обработчике запросов.

Теперь, если я запускаю несколько экземпляров своей вертикали HttpServer -

DeploymentOptions deploymentOptions = new 
        DeploymentOptions().setWorker(false).setInstances(10);

vertx.deployVerticle("com.....HttpServerVerticle", deploymentOptions);

Нужно ли заботиться о безопасности потоков?Возможно, что обработчик нескольких запросов (max = 10) будет работать параллельно?

1 Ответ

0 голосов
/ 01 февраля 2019

В этом случае вы получите 10 вершин, и HTTP-запросы будут отправляться в циклическом порядке из этих 10 вершин.Каждая вертикаль будет назначена на цикл обработки событий, вы сохраняете те же гарантии безопасности потока.

...