为Apache websocket组件配置maxThreads

时间:2018-03-27 15:42:30

标签: spring-boot apache-camel jetty

我试图在Spring Boot环境中使用Apache Camel设置我的第一个websocket。

到目前为止,我能够很容易地宣布一条路线,一条非常基本的路线来测试它。

@Component
public class RoutesNotification extends RouteBuilder {

    protected static final String ECHO = "websocket://echo";

    @Override
    public void configure() {

        from(ECHO)
            .transform().simple("${body}${body}")
            .to(ECHO);
    }

}

或者我想。

 java.lang.IllegalStateException: Insufficient threads: max=9 < needed(acceptors=2 + selectors=8 + request=1)
    at org.eclipse.jetty.server.Server.doStart(Server.java:414)

果然,我环顾四周,看来 Jetty 和Camel websocket 组件(不知不觉中,使用嵌入式Jetty)允许设置自定义具有 maxThreads 选项的线程数,如下所述:http://camel.apache.org/websocket.html

问题是,我无法弄清楚应该如何为组件配置此选项。

过去,我主要使用 servlet 组件,我这样定制:

restConfiguration()
        .component("servlet")
        // Swagger
        .contextPath(Urls.General.API_URL).apiContextPath(Urls.General.SWAGGER_URL).apiProperty("api.title", "{{name}}")
        .apiProperty("api.version", "{{version}}").apiProperty("cors", "true").apiContextRouteId("doc-api")
        // Binding mode pour les formats de message JSON ou XML
        .bindingMode(RestBindingMode.off)
        // Preflight request
        .enableCORS(true) // Cross-Origin Resource Sharing
        .corsHeaderProperty("Access-Control-Allow-Headers",
            "Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, Range, X-Custom-Header, JWT")
        .corsHeaderProperty("Access-Control-Allow-Origin", "*")
        .corsHeaderProperty("Access-Control-Allow-Methods",
            "GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, PATCH")
        .corsHeaderProperty("Cache-Control", "no-cache, no-store, must-revalidate")
        .corsHeaderProperty("Pragma", "no-cache").corsHeaderProperty("Expires", "0, value");

但是,当然,websocket不是REST,我没有找到该组件的等价物。 我试过这个,也是:

getContext()
        .getComponent("websocket")
        .createComponentConfiguration()
        .setParameter("maxThreads", 200);

但是

  1. 没有成功
  2. createComponentConfiguration()和setParameter()无论如何都被弃用
  3. 我在这里不知所措。

    非常感谢您的帮助。 提前谢谢!

0 个答案:

没有答案