ich den Aufbau eines Boten wie Server Umgang habe ich einige Änderungen wie dieseMultithreading Vert.x, um Tausende von Verbindungen pro Sekunde
vertx.deployVerticle(MainDeployment.class.getCanonicalName(),res -> {
if (res.succeeded()) {
Logger.Log("Deployed");
} else {
Logger.Log(res.cause().getMessage());
}
});
server.requestHandler(router::accept).listen(port);
public void createContext(String path,MyHttpHandler handler){
//handlersMap.put(path.split("\\/")[1], handler);
if(!path.endsWith("/")){
path += "/";
}
path+="*";
map.put(path, handler);
}
und hier meine MainDeployment Klasse
Vert.xpublic class MainDeployment extends AbstractVerticle{
@Override
public void start() throws Exception {
//GUI.display("Sub Verticle Has Deployed");
// Different ways of deploying verticles
// Deploy a verticle and don't wait for it to start
for(Entry<String, MyHttpHandler> entry : MyVertxServer.map.entrySet()){
MyVertxServer.router.route(entry.getKey()).handler(new Handler<RoutingContext>() {
@Override
public void handle(RoutingContext ctx) {
String[] handlerID = ctx.request().uri().split(ctx.currentRoute().getPath());
String suffix = handlerID.length > 1 ? handlerID[1] : null;
entry.getValue().Handle(ctx, new VertxUtils(), suffix);
}
});
}
}
}
die Dokumentation sagt
Vert.x guarantees that a particular verticle instance is never executed by more than one thread concurrently. This gives you a huge advantage as a developer, since you can program all your code as single threaded
da jeder verticle einen eigenen Thread hat und sein Single th readed, wenn also meine verticle Dateien hochlädt, kann es nicht 2 Uploads gleichzeitig verarbeiten oder missverstehe ich das Konzept von NIO?
Was haben die bereitgestellten Quellen mit dem Multithread-Problem zu tun? – tmarwen
nichts so weit wie ich suchte, aber sie alle erwähnen grundlegende Verwendungen. Soooo viele Beispiele, aber keine von ihnen bieten solche Informationen – Reza