change: Use mongo template to bulk insert new tasks

This commit is contained in:
2024-01-06 14:53:43 +01:00
parent 07de3a4387
commit bb62330404
@@ -15,6 +15,8 @@ import mu.KotlinLogging
import org.springframework.boot.context.event.ApplicationReadyEvent import org.springframework.boot.context.event.ApplicationReadyEvent
import org.springframework.cloud.kubernetes.commons.leader.LeaderProperties import org.springframework.cloud.kubernetes.commons.leader.LeaderProperties
import org.springframework.context.event.EventListener import org.springframework.context.event.EventListener
import org.springframework.data.mongodb.core.BulkOperations
import org.springframework.data.mongodb.core.MongoTemplate
import org.springframework.integration.leader.event.OnGrantedEvent import org.springframework.integration.leader.event.OnGrantedEvent
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
import java.time.Instant import java.time.Instant
@@ -27,7 +29,8 @@ class ScheduledTaskService(
private val leaderProperties: LeaderProperties, private val leaderProperties: LeaderProperties,
private val scheduledFetchTaskRepository: ScheduledFetchTaskRepository, private val scheduledFetchTaskRepository: ScheduledFetchTaskRepository,
private val taskFactory: TaskFactory, private val taskFactory: TaskFactory,
private val fetchTaskScheduler: FetchTaskScheduler private val fetchTaskScheduler: FetchTaskScheduler,
private val mongoTemplate: MongoTemplate
) { ) {
private var createdTime: Instant = Instant.EPOCH private var createdTime: Instant = Instant.EPOCH
private var lastUpdate: Instant = Instant.EPOCH private var lastUpdate: Instant = Instant.EPOCH
@@ -121,14 +124,13 @@ class ScheduledTaskService(
} }
private fun storeTasksInDatabaseAndStoreCreationTime(newTasks: List<ScheduledFetchTask>) { private fun storeTasksInDatabaseAndStoreCreationTime(newTasks: List<ScheduledFetchTask>) {
val savedEntities = scheduledFetchTaskRepository.saveAll(newTasks) if (newTasks.isNotEmpty()) {
storeCreationTime(savedEntities) createdTime = newTasks.first().created
}
private fun storeCreationTime(savedEntities: MutableList<ScheduledFetchTask>) {
if (savedEntities.isNotEmpty()) {
createdTime = savedEntities[savedEntities.lastIndex].created
} }
mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED,
ScheduledFetchTask::class.java)
.insert(newTasks)
.execute()
} }
private fun publishTasksCreatedEvent() { private fun publishTasksCreatedEvent() {