Я новичок в среде vertx и Java. Код ниже вызывает список конечных точек API для отдыха и сохраняет результаты в MongoDB, и он работает, но я не уверен, что это правильный способ сделать это в среде vertx. Кроме того, есть ли какие-то улучшения?
val deviceRepository = listOf("10.2.0.106",
"10.2.0.120",
"10.2.0.115",
"10.2.0.112",
"10.2.0.118",
"10.2.0.119")
internal class DeviceListVerticle : AbstractVerticle() {
@OptIn(UnstableDefault::class)
@ImplicitReflectionSerializer
override fun start() {
// mongo client connection
val config = mapOf(Pair("db_name", "deviceList"), Pair("connection_string", "mongodb://localhost:27017"))
val mongoClient: MongoClient = MongoClient.create(vertx, JsonObject(config))
val httpClient = WebClient.create(vertx)
// loop through each IP address in deviceRepository and call rest end point http://{IP}/information/device
deviceRepository.forEach { deviceIP ->
val request: HttpRequest<Buffer> = httpClient.get(deviceIP, "information/device")
request.send { ar ->
if (ar.succeeded()) {
// Obtain response
val response = ar.result()
mongoClient.save("devices", response.bodyAsJsonObject()) { res ->
if (res.succeeded()) {
val id: String = res.result()
println("Saved device with id $id")
} else {
res.cause().printStackTrace()
}
}
} else {
println("Something went wrong " + ar.cause().message)
}
}
}
}
override fun stop() {
println("DeviceListVerticle stopped")
}
}
fun main() {
val vertx = Vertx.vertx()
vertx.deployVerticle(DeviceListVerticle())
}