我试图在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);
但是
我在这里不知所措。
非常感谢您的帮助。 提前谢谢!