KMongo создает несколько соединений

#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. Если вы подключаетесь к набору реплик, драйвер обычно открывает одно соединение для обнаружения/мониторинга узлов, а другие-для операций с данными