2016-06-16 4 views
0

Wenn ich eine Route erstelle, die ein paar Lese-Schreib-Aufrufe an Couchbase macht, was ist der richtige Weg, dies in vert.x web zu implementieren? Mit der Handler() - Methode oder der blockingHandler() -Methode?Wie kann vert.x web beim Bereitstellen dynamischer Inhalte korrekt verwendet werden?

router.post("/some/path/").handler(routingContext -> { 
    // a few read write calls to Couchbase here. 
}); 

auch die gleiche Frage wieder, aber im Kontext von Webinhalten aus einer Vorlage wie Lenker oder Pebble zu erzeugen. Benutze handler() oder blockingHandler()?

Antwort

0

Es hängt alles von der Art des Codes ab, den Sie im Handler schreiben. Ausgehend von Ihren zweiten Fragen implementieren alle Vorlagen-Engine-Handler eine asynchrone API (obwohl das Laden der Vorlage selbst blockiert wird, aber nur einmal aufgrund des Caches erfolgt). In diesem Fall sollten Sie verwenden:

router.post("/some/path/").handler(HandlebarsTemplateEngine.create()); 

zurück auf die erste Frage gehen, wenn Ihr Couchbase-Client-API blockiert ist, was bedeutet, dass es nicht reagiert, tut es Block, bis Sie eine Antwort erhalten vom Server zurück, dann In diesem Fall müssen Sie blockingHandler verwenden oder Sie blockieren die Ereignisschleife und blockieren die gesamte Anwendung. Wenn Sie die async-API von couchbase verwenden, sollten Sie die handler-Variante verwenden. Ein Beispiel zur Verwendung der asynchronen API finden Sie in diesem Blog post.

Verwandte Themen