Как настроить разные пулы рабочих потоков на порт - Undertow - Spring Boot - PullRequest
0 голосов
/ 14 января 2020

При использовании Undertow в качестве встроенного сервера в Spring Boot (1.5.9.RELEASE) я могу принимать запросы к разным портам, используя

@Bean
    public UndertowEmbeddedServletContainerFactory embeddedServletContainerFactory() {
        UndertowEmbeddedServletContainerFactory factory = new UndertowEmbeddedServletContainerFactory();
        factory.addBuilderCustomizers(new UndertowBuilderCustomizer() {

            @Override
            public void customize(Undertow.Builder builder) {
                builder.addHttpListener(port,"0.0.0.0").setWorkerThreads(10);
            }

        });

        return factory;
    }

Проблема заключается в том, что настроенные рабочие потоки переопределяют заданную конфигурацию в свойствах приложения server.undertow.worker-threads и не эксклюзив для запросов, исходящих с этого порта.

В отличие от этого, при использовании tomcat это достигается с помощью

    @Bean
    public TomcatEmbeddedServletContainerFactory configurationEndpointServletContainer() {
        TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
        factory.addAdditionalTomcatConnectors(createStandardConnector(port, 10));//number of threads only for this port
        return factory;
    }

    private Connector createStandardConnector(int p, int t) {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setPort(p);
        ((Http11NioProtocol) connector.getProtocolHandler()).setMaxThreads(t);
        return connector;
    }

Возможно ли такое поведение в undertow? (может быть, путем настройки дополнительного сервера Undertow ??)

Спасибо

...