Есть ли хорошая библиотека для Kotlin сопрограмм для асинхронного доступа к понедельнику go? - PullRequest
2 голосов
/ 10 февраля 2020

Я начинаю новый проект в JVM с большим количеством операций ввода-вывода. В какой-то момент я должен сохранить некоторые вещи в базе данных Mon go. Моя идея заключается в использовании неблокирующего подхода с Kotlin сопрограммами.

Я знаю, что есть официальный драйвер потоков Reative для Mon go, и поддержка выглядит хорошо. Но в этом случае мне нужно было бы «создать мосты» между потоками и сопрограммами. Мой вопрос касается этого вопроса: кто-нибудь знает лучший или более простой способ сделать это?

1 Ответ

0 голосов
/ 11 февраля 2020

Взгляните на проект KMon go . имеет поддержку сопрограмм :

import org.litote.kmongo.reactivestreams.*  //NEEDED! import KMongo reactivestreams extensions
import org.litote.kmongo.coroutine.* //NEEDED! import KMongo coroutine extensions

data class Jedi(val name: String, val age: Int)

val client = KMongo.createClient().coroutine //use coroutine extension
val database = client.getDatabase("test") //normal java driver usage
val col = database.getCollection<Jedi>() //KMongo extension method

//async now
runBlocking {
    col.insertOne(Jedi("Luke Skywalker", 19))

    val yoda : Jedi? = col.findOne(Jedi::name eq "Yoda")

    (...)
}
...