Medium - An introduction to Vert.x, the fastest Java framework today
in Trend
Trend 파악을 Medium 기고문 요약 포스팅 - 오늘 날 가장 빠른 자바 프레임워크, Vert.x에 대한 소개
아마 여러분이 최근에 “최고의 웹 프레임워크”를 구글링했다면 수백개가 넘는 프레임워크들이 랭크되어 있는 Techempower 벤치마크를 보셨을 수도 있습니다. 그러니까 Vert.x는 상위권에 있는 프레임워크일 뿐이지 가장 좋은 것은 아니라는 것을 아셔야 합니다.
자 그럼 Vert.x에 대해 얘기해 봅시다.
Vert.x는 루비, 스칼라, 자바, 코틀린, 자바스크립트 등 어러 개의 언어를 지원하는 다중 언어 웹 프레임워크 입니다. 언어를 차치하고 Vert.x는 자바 가상머신에서 수행됩니다. 모듈화되고 가볍기 때문에 마이크로서비스 개발에 특화되어 있습니다.
THe golden rule
val vertx = Vertx.vertx()
vertx.createHttpServer().requestHandler(req => {
}).listen(8080)
val vertx = Vertx.vertx()
vertx.createHttpServer().requestHandler(req => {
req.path() match {
case p if p contains("/user") =>
val f = for {
f1 <- Future { req.getParam("id").get.toInt }
f2 <- if (f1 < 100) Future.unit else Future.failed(CustomException())
f3 <- Future { getUserFromDb(f1) }
} yield f3
f map (r => printout(req, r)) recover {case exception => printout(req, handleException(exception))}
case _ => printout(req, "Default page")
}
})
.listen(8080)
def printout(req: HttpServerRequest, msg: String) = req.response().end(msg)
def handleException(e: Throwable): String = {
e match {
case t: NoSuchElementException => "Missing parameter"
case t: NumberFormatException => "Parameter not number"
case t: CustomException => "Custom exception"
case t: SQLException => "Database error"
case _ => "Unknown error"
}
}
def getUserFromDb(id: Int) = "mock user name"
case class CustomException() extends Exception("custom exception")