Pull to refresh

Comments 12

Для отладки удобно ограничить всё одним потоком:
-Dvertx.options.workerPoolSize=1
-Dvertx.options.eventLoopPoolSize=1


Диспатчер для 1.1 coroutines:

class VertxCoroutineDispatcher() : CoroutineDispatcher() {
val vertx: io.vertx.core.Context = Vertx.currentContext()

override fun isDispatchNeeded(context: CoroutineContext) = (vertx != Vertx.currentContext())

override fun dispatch(context: CoroutineContext, block: Runnable) {
vertx.runOnContext { block.run() }
}
}


Обёртка для suspend->vertx callback:

inline suspend fun vx(crossinline callback: (Handler<JAsyncResult>) -> Unit) = suspendCoroutine { c ->
callback(Handler {
if (it.succeeded()) {
c.resume(it.result())
} else {
c.resumeWithException(it.cause())
}
})
}


Она не будет работать на http-client, там другую надо
Спасибо, поэкспериментирую. Честно говоря, я больше жду когда RxJava 2 будет поддерживаться (говорят, скоро) для этих целей.
UFO just landed and posted this here
Выглядит интересно, но у меня только один вопрос: зрелость проекта не вызывала проблемы на опыте? Мне всегда страшновато базировать приложение, особенно крупное и потенциально долгосрочное, на фреймворке/библиотеке, которой полтора года и у которой все еще только один коммиттер.
UFO just landed and posted this here
Было бы круто увидеть примеры с асинхронными обработчиками Vet.x + Kotlin + async
В комментарии Jedi_Knight можете посмотреть пример, как использовать coroutines в Vert.x.
Интересная тема, а насколько это требовательно к ресурсам? Скажем минимальая конфигурация виртуалки в облачных хостингах которая потянет 600 запросов в минуту без учета выборки/расчета данных, например REST выдающий текущее время?

Это вопрос больше по самому фреймворку, учитывая, что Kotlin на ресурсы не влияет.


Мой деплоймент был небольшим (скажем, не больше 100 запросов в минуту), но он вполне комфортабельно умещался на "small" сервере AWS EC2.


Честно говоря, сам бенчмарки особо не проводил, но при изначальном выборе частично базировался на результатах на TechEmpower: там во всех категориях есть "vertx-web" (в некоторых даже варианты с разными базами данных) и на разном железе/облаке, так что полезно для примерного сравнения.

Только что заметил, что случайно написал, как отдельный комментарий — это был ответ на вопрос Alesh про ресурсы.

Много лет разрабатывал на Java и Spring. Но для прототипов так же использую связку Vertx+Kotlin.
Из достоинств, которые стоит еще упомянуть — очень быстрая компиляция, особенно если включен Gradle Daemon.
В качестве продолжения статьи так же хотелось бы посоветовать показать работу с БД. Она в Vertx так же сделана на мой взгляд крайне удобно.

Спасибо за совет, возможно сделаю в будущем продолжение про БД драйверы.


Компиляция действительно очень быстрая и в большей части случаев даже не требуется запускать ее с нуля: в исходнике build.gradle примера есть "redeploy watcher", который пересобирает приложение при любых изменениях. Очень удобно, когда отлаживаешь что-то или новый маршрут пишешь.

Sign up to leave a comment.

Articles