Added missing task poller in coordinator

This commit is contained in:
Brage Skjønborg 2026-01-21 20:11:52 +01:00
parent d27d37c4db
commit 30a067bb90
2 changed files with 67 additions and 1 deletions

View File

@ -14,7 +14,7 @@ import org.springframework.stereotype.Component
@Component
class PollerAdministrator(
class EventPollerAdministrator(
private val eventPoller: EventPoller
) : SmartLifecycle {

View File

@ -0,0 +1,66 @@
package no.iktdev.mediaprocessing.coordinator
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import no.iktdev.eventi.models.Event
import no.iktdev.eventi.models.store.TaskStatus
import no.iktdev.eventi.tasks.TaskPollerImplementation
import no.iktdev.eventi.tasks.TaskReporter
import no.iktdev.mediaprocessing.shared.database.stores.EventStore
import no.iktdev.mediaprocessing.shared.database.stores.TaskStore
import org.springframework.boot.ApplicationArguments
import org.springframework.boot.ApplicationRunner
import org.springframework.stereotype.Component
import org.springframework.stereotype.Service
import java.util.*
@Component
class TaskPollerAdministrator(
private val taskPoller: TaskPoller,
): ApplicationRunner {
override fun run(args: ApplicationArguments?) {
CoroutineScope(Dispatchers.Default).launch {
taskPoller.start()
}
}
}
@Service
class TaskPoller(
private val reporter: TaskReporter,
) : TaskPollerImplementation(
taskStore = TaskStore,
reporterFactory = { reporter } // én reporter brukes for alle tasks
) {
}
@Component
class DefaultTaskReporter() : TaskReporter {
override fun markClaimed(taskId: UUID, workerId: String) {
TaskStore.claim(taskId, workerId)
}
override fun updateLastSeen(taskId: UUID) {
TaskStore.heartbeat(taskId)
}
override fun markConsumed(taskId: UUID) {
TaskStore.markConsumed(taskId, TaskStatus.Completed)
}
override fun updateProgress(taskId: UUID, progress: Int) {
// Not to be implemented for this application
}
override fun log(taskId: UUID, message: String) {
// Not to be implemented for this application
}
override fun publishEvent(event: Event) {
EventStore.persist(event)
}
}