#mongodb #kmongo
Вопрос:
Я начал работать над проектом KMongo в Котлине, хотя, когда я подключаюсь к своей базе данных, KMongo создает 2 соединения вместо одного (посмотрите на изображение здесь). Кто-нибудь знает, почему?
Мой класс для подключения к базе данных
object Mongo {
lateinit var connectionString: String
lateinit var database: String
private lateinit var mongo: MongoDatabase
fun connect() {
val client = KMongo.createClient(connectionString)
mongo = client.getDatabase(database)
}
fun get(collection: String): CoroutineCollection<Document> {
return this.mongo.getCollection(collection).coroutine
}
}
fun database(database: Mongo.() -> Unit) = Mongo.apply(database)
Основной класс
fun main() {
Thread {
while (true) {
}
}.start()
database {
connectionString = "mongodb://username:password@host:port/test?w=majority"
database = "Test"
}.also { it.connect() }
}
Для зависимостей, которые я использовал
- кмонго-асинхронный
- кмонго-корутин
Комментарии:
1. Это, вероятно, зависит от строки подключения.
2. Моя строка подключения имеет следующий шаблон:
mongodb://username:password@host:port/test?w=majority
3. Настроен ли mongod с именем набора реплик?
4. Нет, я так не думаю. Вы бы тоже настроили это в строке подключения?
5. Если вы подключаетесь к набору реплик, драйвер обычно открывает одно соединение для обнаружения/мониторинга узлов, а другие-для операций с данными