Неожиданное поведение блокировки - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть Java веб-приложение с методом HTTP GET с этим кодом (внутри сервлета):

        Certificate certificate = Observable.range(1, 10)
                .delay(3, TimeUnit.SECONDS)
                .filter(integer -> {
                    try {
                        LOG.info("AUTHORIZE ATTEMPTS: " + integer);
                        order.update();
                    } catch (AcmeException e) {
                        Exceptions.propagate(e);
                    }
                    return order.getStatus() == Status.VALID;
                }).map(integer -> {
                    Certificate cert = order.getCertificate();
                    return cert;
                }).toBlocking().first();

Проблема с этим в отношении NGINX Единица заключается в том, что при запуске в localhost, использующий плагин Jetty maven, все в порядке, однако при работе с NGINX Модуль с этой конфигурацией приложения:

{
  "applications": {
    "backend": {
      "processes": 1,
      "type": "java",
      "options": [
        "-Dlog_path=/var/log/backend-server-0-SNAPSHOT.log"
      ],
      "webapp": "/var/www/backend-server-0-SNAPSHOT.war"
    }
  },
  "listeners": {
    "*:8080": {
      "application": "backend"
    }
  }
}

Приведенный выше код Java блокирует все веб-приложение, то есть никакой другой HTTP-запрос может обрабатываться веб-приложением Java в течение 30 секунд, поскольку Observable.range(1, 10) с задержкой в ​​3 секунды.

Интересно, почему NGINX Устройство ведет себя так. Ожидаемое поведение заключается в том, что веб-приложение все еще должно быть в состоянии обслуживать запросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...