2016-06-16 8 views
0

Couchbaseに少数の読み書き呼び出しを行うルートを作成した場合、これをvert.x webに実装する正しい方法は何ですか? handler()メソッドまたはblockingHandler()メソッドを使用しますか?動的コンテンツを提供する際にvert.x webを使用する正しい方法は何ですか?

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

また同じ質問ですが、HandlebarsやPebbleなどのテンプレートからWebコンテンツを生成するコンテキストでも同じです。 handler()またはblockingHandler()を使用しますか?

答えて

0

すべては、ハンドラ内で記述しているコードの種類によって異なります。 2番目の質問から始めて、すべてのテンプレートエンジンハンドラは非同期APIを実装しています(ただし、テンプレート自体の読み込みはブロックされていますが、キャッシュのために1回のみ実行されます)。あなたが使用する必要があり、その場合には:あなたのCouchbaseクライアントAPIは、その後、あなたが戻ってサーバーからの応答を取得するまで、それが応答しないことを意味し、それはブロックを行い、ブロックしている場合、バック最初の質問に行く

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

その場合はblockingHandlerを使用する必要があります。そうでない場合は、イベントループをブロックし、拡張機能によってアプリケーション全体をブロックします。

ただし、couchbase非同期APIを使用している場合は、handlerの亜種を使用する必要があります。非同期APIの使い方の例については、このブログpostを参照してください。

関連する問題