Play Framework: Как создать и использовать пул подключений? - PullRequest
1 голос
/ 17 января 2012

В документации Play есть этот пример:

public class AsyncTest extends Controller {

  public static void remoteData() {
    F.Promise<WS.HttpResponse> r1 = WS.url("http://example.org/1").getAsync();
    F.Promise<WS.HttpResponse> r2 = WS.url("http://example.org/2").getAsync();
    F.Promise<WS.HttpResponse> r3 = WS.url("http://example.org/3").getAsync();

    F.Promise<List<WS.HttpResponse>> promises = F.Promise.waitAll(r1, r2, r3);

    // Suspend processing here, until all three remote calls are complete.
    List<WS.HttpResponse> httpResponses = await(promises);

    render(httpResponses);
  }
}

В вышеприведенном примере создано 3 новых HTTP подключения к example.org, верно?

Есть ли способсоздать пул соединений при запуске, а затем просто захватывать и повторно использовать соединения из этого пула вместо неоднократного создания и разрыва соединений?

В идеале у меня может быть несколько пулов соединений, например, пул HTTP-соединений, пул соединений с БД и т. д. Как я могу это сделать?

Спасибо.

1 Ответ

1 голос
/ 17 января 2012

В вашем примере вы не получаете соединения, вы получаете HttpResponses, которые являются ответом на конкретный запрос GET, который вы отправили по указанному URL.Поскольку используемый вами API не зависит от соединения, базовая структура может создать 3 отдельных соединения или повторно использовать одно соединение для всех 3, и вы должны получить один и тот же ответ.

Я не знаючто фреймворк делает под капотом, но держу пари, что это довольно хорошо.

Однако, если вы хотите вручную установить набор ресурсов при запуске приложения (может быть, TCP-соединения с рабочими узлами?), вы можете инициализироватьчто-нибудь при запуске приложения, как показано ниже:

import play.jobs.Job;
import play.jobs.OnApplicationStart;

@OnApplicationStart
public class InitializeConnectionPool extends Job {
    @Override
    public void doJob() {
        //initialize your connection pools here, storing them in a static variable
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...