mongo config
import com.mongodb.ConnectionString
import com.mongodb.MongoClientSettings
import com.mongodb.ServerApi
import com.mongodb.ServerApiVersion
import com.mongodb.client.MongoClient
import com.mongodb.client.MongoClients
import com.mongodb.client.MongoDatabase
import java.util.concurrent.TimeUnit
class MongoDBConfig(
connectionString: String,
databaseName: String,
private val poolMaxSize: Int = 50,
private val poolMinSize: Int = 5,
private val timeoutSeconds: Long = 5,
) : AutoCloseable {
private val client: MongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyConnectionString(ConnectionString(connectionString))
.serverApi(ServerApi.builder().version(ServerApiVersion.V1).build())
.applyToConnectionPoolSettings { pool ->
pool.maxSize(poolMaxSize)
pool.minSize(poolMinSize)
pool.maxWaitTime(timeoutSeconds, TimeUnit.SECONDS)
}
.applyToSocketSettings { socket ->
socket.connectTimeout(timeoutSeconds, TimeUnit.SECONDS)
socket.readTimeout(timeoutSeconds, TimeUnit.SECONDS)
}
.build()
)
val database: MongoDatabase = client.getDatabase(databaseName)
override fun close() = client.close()
}