v3 36
This commit is contained in:
parent
199cee8594
commit
072cb2b192
@ -14,14 +14,18 @@ import no.iktdev.mediaprocessing.shared.contract.data.ConvertData
|
|||||||
import no.iktdev.mediaprocessing.shared.contract.data.ConvertWorkPerformed
|
import no.iktdev.mediaprocessing.shared.contract.data.ConvertWorkPerformed
|
||||||
import no.iktdev.mediaprocessing.shared.contract.data.ConvertedData
|
import no.iktdev.mediaprocessing.shared.contract.data.ConvertedData
|
||||||
import org.springframework.beans.factory.annotation.Autowired
|
import org.springframework.beans.factory.annotation.Autowired
|
||||||
import org.springframework.scheduling.annotation.EnableScheduling
|
|
||||||
import org.springframework.stereotype.Service
|
import org.springframework.stereotype.Service
|
||||||
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
class ConvertServiceV2(
|
class ConvertService(
|
||||||
@Autowired var tasks: TaskCoordinator,
|
@Autowired var tasks: TaskCoordinator,
|
||||||
) : TaskService(), ConvertListener, TaskCoordinator.TaskEvents {
|
) : TaskService(), ConvertListener, TaskCoordinator.TaskEvents {
|
||||||
|
|
||||||
|
fun getProducerName(): String {
|
||||||
|
return this::class.java.simpleName
|
||||||
|
}
|
||||||
|
|
||||||
override val log = KotlinLogging.logger {}
|
override val log = KotlinLogging.logger {}
|
||||||
override val logDir = ConverterEnv.logDirectory
|
override val logDir = ConverterEnv.logDirectory
|
||||||
|
|
||||||
@ -86,7 +90,8 @@ class ConvertServiceV2(
|
|||||||
metadata = EventMetadata(
|
metadata = EventMetadata(
|
||||||
referenceId = task.referenceId,
|
referenceId = task.referenceId,
|
||||||
derivedFromEventId = task.eventId,
|
derivedFromEventId = task.eventId,
|
||||||
status = EventStatus.Success
|
status = EventStatus.Success,
|
||||||
|
source = getProducerName()
|
||||||
),
|
),
|
||||||
data = ConvertedData(
|
data = ConvertedData(
|
||||||
outputFiles = outputFiles
|
outputFiles = outputFiles
|
||||||
@ -105,7 +110,8 @@ class ConvertServiceV2(
|
|||||||
metadata = EventMetadata(
|
metadata = EventMetadata(
|
||||||
referenceId = task.referenceId,
|
referenceId = task.referenceId,
|
||||||
derivedFromEventId = task.eventId,
|
derivedFromEventId = task.eventId,
|
||||||
status = EventStatus.Failed
|
status = EventStatus.Failed,
|
||||||
|
source = getProducerName()
|
||||||
)
|
)
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
@ -29,6 +29,10 @@ class Coordinator(
|
|||||||
init {
|
init {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getProducerName(): String {
|
||||||
|
return this::class.java.simpleName
|
||||||
|
}
|
||||||
|
|
||||||
public fun startProcess(file: File, type: ProcessType) {
|
public fun startProcess(file: File, type: ProcessType) {
|
||||||
val operations: List<StartOperationEvents> = listOf(
|
val operations: List<StartOperationEvents> = listOf(
|
||||||
StartOperationEvents.ENCODE,
|
StartOperationEvents.ENCODE,
|
||||||
@ -43,7 +47,8 @@ class Coordinator(
|
|||||||
val event = MediaProcessStartEvent(
|
val event = MediaProcessStartEvent(
|
||||||
metadata = EventMetadata(
|
metadata = EventMetadata(
|
||||||
referenceId = referenceId.toString(),
|
referenceId = referenceId.toString(),
|
||||||
status = EventStatus.Success
|
status = EventStatus.Success,
|
||||||
|
source = getProducerName()
|
||||||
),
|
),
|
||||||
data = StartEventData(
|
data = StartEventData(
|
||||||
file = file.absolutePath,
|
file = file.absolutePath,
|
||||||
@ -71,7 +76,8 @@ class Coordinator(
|
|||||||
metadata = EventMetadata(
|
metadata = EventMetadata(
|
||||||
referenceId = referenceId,
|
referenceId = referenceId,
|
||||||
derivedFromEventId = eventToAttachTo.eventId(),
|
derivedFromEventId = eventToAttachTo.eventId(),
|
||||||
status = EventStatus.Success
|
status = EventStatus.Success,
|
||||||
|
source = getProducerName()
|
||||||
),
|
),
|
||||||
data = message
|
data = message
|
||||||
))
|
))
|
||||||
|
|||||||
@ -26,7 +26,9 @@ class BaseInfoFromFileTaskListener() : CoordinatorEventListener() {
|
|||||||
override val produceEvent: Events = Events.EventMediaReadBaseInfoPerformed
|
override val produceEvent: Events = Events.EventMediaReadBaseInfoPerformed
|
||||||
override val listensForEvents: List<Events> = listOf(Events.EventMediaProcessStarted)
|
override val listensForEvents: List<Events> = listOf(Events.EventMediaProcessStarted)
|
||||||
|
|
||||||
|
override fun getProducerName(): String {
|
||||||
|
return this::class.java.simpleName
|
||||||
|
}
|
||||||
|
|
||||||
override fun onEventsReceived(incomingEvent: ConsumableEvent<Event>, events: List<Event>) {
|
override fun onEventsReceived(incomingEvent: ConsumableEvent<Event>, events: List<Event>) {
|
||||||
val event = incomingEvent.consume()
|
val event = incomingEvent.consume()
|
||||||
@ -36,11 +38,11 @@ class BaseInfoFromFileTaskListener() : CoordinatorEventListener() {
|
|||||||
}
|
}
|
||||||
val message = try {
|
val message = try {
|
||||||
readFileInfo(event.data as StartEventData, event.metadata.eventId)?.let {
|
readFileInfo(event.data as StartEventData, event.metadata.eventId)?.let {
|
||||||
BaseInfoEvent(metadata = event.makeDerivedEventInfo(EventStatus.Success), data = it)
|
BaseInfoEvent(metadata = event.makeDerivedEventInfo(EventStatus.Success, getProducerName()), data = it)
|
||||||
} ?: BaseInfoEvent(metadata = event.makeDerivedEventInfo(EventStatus.Failed))
|
} ?: BaseInfoEvent(metadata = event.makeDerivedEventInfo(EventStatus.Failed, getProducerName()))
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
BaseInfoEvent(metadata = event.makeDerivedEventInfo(EventStatus.Failed))
|
BaseInfoEvent(metadata = event.makeDerivedEventInfo(EventStatus.Failed, getProducerName()))
|
||||||
}
|
}
|
||||||
onProduceEvent(message)
|
onProduceEvent(message)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,6 +33,9 @@ class CompletedTaskListener: CoordinatorEventListener() {
|
|||||||
|
|
||||||
var doNotProduceComplete = System.getenv("DISABLE_COMPLETE").toBoolean() ?: false
|
var doNotProduceComplete = System.getenv("DISABLE_COMPLETE").toBoolean() ?: false
|
||||||
|
|
||||||
|
override fun getProducerName(): String {
|
||||||
|
return this::class.java.simpleName
|
||||||
|
}
|
||||||
|
|
||||||
override fun onReady() {
|
override fun onReady() {
|
||||||
super.onReady()
|
super.onReady()
|
||||||
@ -410,7 +413,7 @@ class CompletedTaskListener: CoordinatorEventListener() {
|
|||||||
|
|
||||||
|
|
||||||
onProduceEvent(MediaProcessCompletedEvent(
|
onProduceEvent(MediaProcessCompletedEvent(
|
||||||
metadata = event.makeDerivedEventInfo(EventStatus.Success),
|
metadata = event.makeDerivedEventInfo(EventStatus.Success, getProducerName()),
|
||||||
data = CompletedEventData(
|
data = CompletedEventData(
|
||||||
events.map { it.eventId() }
|
events.map { it.eventId() }
|
||||||
)
|
)
|
||||||
|
|||||||
@ -24,6 +24,10 @@ import java.io.File
|
|||||||
class ConvertWorkTaskListener: WorkTaskListener() {
|
class ConvertWorkTaskListener: WorkTaskListener() {
|
||||||
val log = KotlinLogging.logger {}
|
val log = KotlinLogging.logger {}
|
||||||
|
|
||||||
|
override fun getProducerName(): String {
|
||||||
|
return this::class.java.simpleName
|
||||||
|
}
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
override var coordinator: Coordinator? = null
|
override var coordinator: Coordinator? = null
|
||||||
override val produceEvent: Events = Events.EventWorkConvertCreated
|
override val produceEvent: Events = Events.EventWorkConvertCreated
|
||||||
@ -73,7 +77,7 @@ class ConvertWorkTaskListener: WorkTaskListener() {
|
|||||||
val convertFile = file?.let { File(it) }
|
val convertFile = file?.let { File(it) }
|
||||||
if (convertFile == null || !convertFile.exists()) {
|
if (convertFile == null || !convertFile.exists()) {
|
||||||
onProduceEvent(ConvertWorkCreatedEvent(
|
onProduceEvent(ConvertWorkCreatedEvent(
|
||||||
metadata = event.makeDerivedEventInfo(EventStatus.Failed)
|
metadata = event.makeDerivedEventInfo(EventStatus.Failed, getProducerName())
|
||||||
))
|
))
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
@ -86,7 +90,7 @@ class ConvertWorkTaskListener: WorkTaskListener() {
|
|||||||
|
|
||||||
|
|
||||||
ConvertWorkCreatedEvent(
|
ConvertWorkCreatedEvent(
|
||||||
metadata = event.makeDerivedEventInfo(EventStatus.Success),
|
metadata = event.makeDerivedEventInfo(EventStatus.Success, getProducerName()),
|
||||||
data = convertData
|
data = convertData
|
||||||
).also { event ->
|
).also { event ->
|
||||||
onProduceEvent(event)
|
onProduceEvent(event)
|
||||||
|
|||||||
@ -21,6 +21,10 @@ import java.io.File
|
|||||||
class CoverDownloadTaskListener : CoordinatorEventListener() {
|
class CoverDownloadTaskListener : CoordinatorEventListener() {
|
||||||
val log = KotlinLogging.logger {}
|
val log = KotlinLogging.logger {}
|
||||||
|
|
||||||
|
override fun getProducerName(): String {
|
||||||
|
return this::class.java.simpleName
|
||||||
|
}
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
override var coordinator: Coordinator? = null
|
override var coordinator: Coordinator? = null
|
||||||
override val produceEvent: Events = Events.EventWorkDownloadCoverPerformed
|
override val produceEvent: Events = Events.EventWorkDownloadCoverPerformed
|
||||||
@ -34,7 +38,7 @@ class CoverDownloadTaskListener : CoordinatorEventListener() {
|
|||||||
|
|
||||||
|
|
||||||
val failedEventDefault = MediaCoverDownloadedEvent(
|
val failedEventDefault = MediaCoverDownloadedEvent(
|
||||||
metadata = event.makeDerivedEventInfo(EventStatus.Failed)
|
metadata = event.makeDerivedEventInfo(EventStatus.Failed, getProducerName())
|
||||||
)
|
)
|
||||||
|
|
||||||
val data = event.az<MediaCoverInfoReceivedEvent>()?.data
|
val data = event.az<MediaCoverInfoReceivedEvent>()?.data
|
||||||
@ -83,7 +87,7 @@ class CoverDownloadTaskListener : CoordinatorEventListener() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
onProduceEvent(MediaCoverDownloadedEvent(
|
onProduceEvent(MediaCoverDownloadedEvent(
|
||||||
metadata = event.makeDerivedEventInfo(EventStatus.Success),
|
metadata = event.makeDerivedEventInfo(EventStatus.Success, getProducerName()),
|
||||||
data = DownloadedCover(result.absolutePath)
|
data = DownloadedCover(result.absolutePath)
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,6 +18,9 @@ import org.springframework.stereotype.Service
|
|||||||
class CoverFromMetadataTaskListener: CoordinatorEventListener() {
|
class CoverFromMetadataTaskListener: CoordinatorEventListener() {
|
||||||
val log = KotlinLogging.logger {}
|
val log = KotlinLogging.logger {}
|
||||||
|
|
||||||
|
override fun getProducerName(): String {
|
||||||
|
return this::class.java.simpleName
|
||||||
|
}
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
override var coordinator: Coordinator? = null
|
override var coordinator: Coordinator? = null
|
||||||
@ -73,11 +76,11 @@ class CoverFromMetadataTaskListener: CoordinatorEventListener() {
|
|||||||
val result = if (coverUrl.isNullOrBlank()) {
|
val result = if (coverUrl.isNullOrBlank()) {
|
||||||
log.warn { "No cover available for ${baseInfo.title}" }
|
log.warn { "No cover available for ${baseInfo.title}" }
|
||||||
MediaCoverInfoReceivedEvent(
|
MediaCoverInfoReceivedEvent(
|
||||||
metadata = event.makeDerivedEventInfo(EventStatus.Skipped)
|
metadata = event.makeDerivedEventInfo(EventStatus.Skipped, getProducerName())
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
MediaCoverInfoReceivedEvent(
|
MediaCoverInfoReceivedEvent(
|
||||||
metadata = event.makeDerivedEventInfo(EventStatus.Success),
|
metadata = event.makeDerivedEventInfo(EventStatus.Success, getProducerName()),
|
||||||
data = CoverDetails(
|
data = CoverDetails(
|
||||||
url = coverUrl,
|
url = coverUrl,
|
||||||
outFileBaseName = NameHelper.normalize(coverTitle),
|
outFileBaseName = NameHelper.normalize(coverTitle),
|
||||||
|
|||||||
@ -22,6 +22,9 @@ import java.io.File
|
|||||||
class EncodeWorkArgumentsTaskListener: CoordinatorEventListener() {
|
class EncodeWorkArgumentsTaskListener: CoordinatorEventListener() {
|
||||||
val log = KotlinLogging.logger {}
|
val log = KotlinLogging.logger {}
|
||||||
|
|
||||||
|
override fun getProducerName(): String {
|
||||||
|
return this::class.java.simpleName
|
||||||
|
}
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
override var coordinator: Coordinator? = null
|
override var coordinator: Coordinator? = null
|
||||||
@ -74,11 +77,11 @@ class EncodeWorkArgumentsTaskListener: CoordinatorEventListener() {
|
|||||||
val result = mapper.getArguments()
|
val result = mapper.getArguments()
|
||||||
if (result == null) {
|
if (result == null) {
|
||||||
onProduceEvent(EncodeArgumentCreatedEvent(
|
onProduceEvent(EncodeArgumentCreatedEvent(
|
||||||
metadata = event.makeDerivedEventInfo(EventStatus.Failed)
|
metadata = event.makeDerivedEventInfo(EventStatus.Failed, getProducerName())
|
||||||
))
|
))
|
||||||
} else {
|
} else {
|
||||||
onProduceEvent(EncodeArgumentCreatedEvent(
|
onProduceEvent(EncodeArgumentCreatedEvent(
|
||||||
metadata = event.makeDerivedEventInfo(EventStatus.Success),
|
metadata = event.makeDerivedEventInfo(EventStatus.Success, getProducerName()),
|
||||||
data = result
|
data = result
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,6 +22,10 @@ import org.springframework.stereotype.Service
|
|||||||
class EncodeWorkTaskListener : WorkTaskListener() {
|
class EncodeWorkTaskListener : WorkTaskListener() {
|
||||||
private val log = KotlinLogging.logger {}
|
private val log = KotlinLogging.logger {}
|
||||||
|
|
||||||
|
override fun getProducerName(): String {
|
||||||
|
return this::class.java.simpleName
|
||||||
|
}
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
override var coordinator: Coordinator? = null
|
override var coordinator: Coordinator? = null
|
||||||
override val produceEvent: Events = Events.EventWorkEncodeCreated
|
override val produceEvent: Events = Events.EventWorkEncodeCreated
|
||||||
@ -55,7 +59,7 @@ class EncodeWorkTaskListener : WorkTaskListener() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
EncodeWorkCreatedEvent(
|
EncodeWorkCreatedEvent(
|
||||||
metadata = event.makeDerivedEventInfo(EventStatus.Success),
|
metadata = event.makeDerivedEventInfo(EventStatus.Success, getProducerName()),
|
||||||
data = encodeArguments
|
data = encodeArguments
|
||||||
).also { event ->
|
).also { event ->
|
||||||
onProduceEvent(event)
|
onProduceEvent(event)
|
||||||
|
|||||||
@ -21,6 +21,10 @@ import java.io.File
|
|||||||
class ExtractWorkArgumentsTaskListener: CoordinatorEventListener() {
|
class ExtractWorkArgumentsTaskListener: CoordinatorEventListener() {
|
||||||
val log = KotlinLogging.logger {}
|
val log = KotlinLogging.logger {}
|
||||||
|
|
||||||
|
override fun getProducerName(): String {
|
||||||
|
return this::class.java.simpleName
|
||||||
|
}
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
override var coordinator: Coordinator? = null
|
override var coordinator: Coordinator? = null
|
||||||
override val produceEvent: Events = Events.EventMediaParameterExtractCreated
|
override val produceEvent: Events = Events.EventMediaParameterExtractCreated
|
||||||
@ -68,11 +72,11 @@ class ExtractWorkArgumentsTaskListener: CoordinatorEventListener() {
|
|||||||
val result = mapper.getArguments()
|
val result = mapper.getArguments()
|
||||||
if (result.isEmpty()) {
|
if (result.isEmpty()) {
|
||||||
onProduceEvent(ExtractArgumentCreatedEvent(
|
onProduceEvent(ExtractArgumentCreatedEvent(
|
||||||
metadata = event.makeDerivedEventInfo(EventStatus.Skipped)
|
metadata = event.makeDerivedEventInfo(EventStatus.Skipped, getProducerName())
|
||||||
))
|
))
|
||||||
} else {
|
} else {
|
||||||
onProduceEvent(ExtractArgumentCreatedEvent(
|
onProduceEvent(ExtractArgumentCreatedEvent(
|
||||||
metadata = event.makeDerivedEventInfo(EventStatus.Success),
|
metadata = event.makeDerivedEventInfo(EventStatus.Success, getProducerName()),
|
||||||
data = result
|
data = result
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,6 +22,10 @@ import org.springframework.stereotype.Service
|
|||||||
class ExtractWorkTaskListener: WorkTaskListener() {
|
class ExtractWorkTaskListener: WorkTaskListener() {
|
||||||
private val log = KotlinLogging.logger {}
|
private val log = KotlinLogging.logger {}
|
||||||
|
|
||||||
|
override fun getProducerName(): String {
|
||||||
|
return this::class.java.simpleName
|
||||||
|
}
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
override var coordinator: Coordinator? = null
|
override var coordinator: Coordinator? = null
|
||||||
override val produceEvent: Events = Events.EventWorkExtractCreated
|
override val produceEvent: Events = Events.EventWorkExtractCreated
|
||||||
@ -62,14 +66,14 @@ class ExtractWorkTaskListener: WorkTaskListener() {
|
|||||||
}
|
}
|
||||||
if (arguments.isEmpty()) {
|
if (arguments.isEmpty()) {
|
||||||
ExtractWorkCreatedEvent(
|
ExtractWorkCreatedEvent(
|
||||||
metadata = event.makeDerivedEventInfo(EventStatus.Failed)
|
metadata = event.makeDerivedEventInfo(EventStatus.Failed, getProducerName())
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
arguments.mapNotNull {
|
arguments.mapNotNull {
|
||||||
ExtractWorkCreatedEvent(
|
ExtractWorkCreatedEvent(
|
||||||
metadata = event.makeDerivedEventInfo(EventStatus.Success),
|
metadata = event.makeDerivedEventInfo(EventStatus.Success, getProducerName()),
|
||||||
data = it
|
data = it
|
||||||
)
|
)
|
||||||
}.forEach { event ->
|
}.forEach { event ->
|
||||||
|
|||||||
@ -27,6 +27,11 @@ import java.io.FileFilter
|
|||||||
|
|
||||||
@Service
|
@Service
|
||||||
class MediaOutInformationTaskListener: CoordinatorEventListener() {
|
class MediaOutInformationTaskListener: CoordinatorEventListener() {
|
||||||
|
|
||||||
|
override fun getProducerName(): String {
|
||||||
|
return this::class.java.simpleName
|
||||||
|
}
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
override var coordinator: Coordinator? = null
|
override var coordinator: Coordinator? = null
|
||||||
|
|
||||||
@ -52,7 +57,7 @@ class MediaOutInformationTaskListener: CoordinatorEventListener() {
|
|||||||
log.error { "Required event ${Events.EventMediaReadBaseInfoPerformed} is not present" }
|
log.error { "Required event ${Events.EventMediaReadBaseInfoPerformed} is not present" }
|
||||||
coordinator?.produceNewEvent(
|
coordinator?.produceNewEvent(
|
||||||
MediaOutInformationConstructedEvent(
|
MediaOutInformationConstructedEvent(
|
||||||
metadata = event.makeDerivedEventInfo(EventStatus.Failed)
|
metadata = event.makeDerivedEventInfo(EventStatus.Failed, getProducerName())
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
@ -65,12 +70,12 @@ class MediaOutInformationTaskListener: CoordinatorEventListener() {
|
|||||||
outDirectory = pm.getOutputDirectory().absolutePath,
|
outDirectory = pm.getOutputDirectory().absolutePath,
|
||||||
info = vi
|
info = vi
|
||||||
).let { MediaOutInformationConstructedEvent(
|
).let { MediaOutInformationConstructedEvent(
|
||||||
metadata = event.makeDerivedEventInfo(EventStatus.Success),
|
metadata = event.makeDerivedEventInfo(EventStatus.Success, getProducerName()),
|
||||||
data = it
|
data = it
|
||||||
) }
|
) }
|
||||||
} else {
|
} else {
|
||||||
MediaOutInformationConstructedEvent(
|
MediaOutInformationConstructedEvent(
|
||||||
metadata = event.makeDerivedEventInfo(EventStatus.Failed)
|
metadata = event.makeDerivedEventInfo(EventStatus.Failed, getProducerName())
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
onProduceEvent(result)
|
onProduceEvent(result)
|
||||||
|
|||||||
@ -29,6 +29,11 @@ val metadataTimeoutMinutes: Int = System.getenv("METADATA_TIMEOUT")?.toIntOrNull
|
|||||||
@Service
|
@Service
|
||||||
@EnableScheduling
|
@EnableScheduling
|
||||||
class MetadataWaitOrDefaultTaskListener() : CoordinatorEventListener() {
|
class MetadataWaitOrDefaultTaskListener() : CoordinatorEventListener() {
|
||||||
|
|
||||||
|
override fun getProducerName(): String {
|
||||||
|
return this::class.java.simpleName
|
||||||
|
}
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
override var coordinator: Coordinator? = null
|
override var coordinator: Coordinator? = null
|
||||||
|
|
||||||
@ -101,7 +106,8 @@ class MetadataWaitOrDefaultTaskListener() : CoordinatorEventListener() {
|
|||||||
metadata = EventMetadata(
|
metadata = EventMetadata(
|
||||||
referenceId = it.key,
|
referenceId = it.key,
|
||||||
derivedFromEventId = it.value.eventId,
|
derivedFromEventId = it.value.eventId,
|
||||||
status = EventStatus.Skipped
|
status = EventStatus.Skipped,
|
||||||
|
source = getProducerName()
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -27,6 +27,10 @@ import org.springframework.stereotype.Service
|
|||||||
class ParseMediaFileStreamsTaskListener() : CoordinatorEventListener() {
|
class ParseMediaFileStreamsTaskListener() : CoordinatorEventListener() {
|
||||||
val log = KotlinLogging.logger {}
|
val log = KotlinLogging.logger {}
|
||||||
|
|
||||||
|
override fun getProducerName(): String {
|
||||||
|
return this::class.java.simpleName
|
||||||
|
}
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
override var coordinator: Coordinator? = null
|
override var coordinator: Coordinator? = null
|
||||||
|
|
||||||
@ -50,13 +54,13 @@ class ParseMediaFileStreamsTaskListener() : CoordinatorEventListener() {
|
|||||||
val readData = event.dataAs<JsonObject>()
|
val readData = event.dataAs<JsonObject>()
|
||||||
val result = try {
|
val result = try {
|
||||||
MediaFileStreamsParsedEvent(
|
MediaFileStreamsParsedEvent(
|
||||||
metadata = event.makeDerivedEventInfo(EventStatus.Success),
|
metadata = event.makeDerivedEventInfo(EventStatus.Success, getProducerName()),
|
||||||
data = parseStreams(readData)
|
data = parseStreams(readData)
|
||||||
)
|
)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
MediaFileStreamsParsedEvent(
|
MediaFileStreamsParsedEvent(
|
||||||
metadata = event.makeDerivedEventInfo(EventStatus.Failed)
|
metadata = event.makeDerivedEventInfo(EventStatus.Failed, getProducerName())
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
onProduceEvent(result)
|
onProduceEvent(result)
|
||||||
|
|||||||
@ -27,6 +27,11 @@ import java.io.File
|
|||||||
|
|
||||||
@Service
|
@Service
|
||||||
class ReadMediaFileStreamsTaskListener() : CoordinatorEventListener() {
|
class ReadMediaFileStreamsTaskListener() : CoordinatorEventListener() {
|
||||||
|
|
||||||
|
override fun getProducerName(): String {
|
||||||
|
return this::class.java.simpleName
|
||||||
|
}
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
override var coordinator: Coordinator? = null
|
override var coordinator: Coordinator? = null
|
||||||
|
|
||||||
@ -57,13 +62,13 @@ class ReadMediaFileStreamsTaskListener() : CoordinatorEventListener() {
|
|||||||
try {
|
try {
|
||||||
val data = fileReadStreams(startEvent, event.metadata.eventId)
|
val data = fileReadStreams(startEvent, event.metadata.eventId)
|
||||||
MediaFileStreamsReadEvent(
|
MediaFileStreamsReadEvent(
|
||||||
metadata = event.makeDerivedEventInfo(EventStatus.Success),
|
metadata = event.makeDerivedEventInfo(EventStatus.Success, getProducerName()),
|
||||||
data = data
|
data = data
|
||||||
)
|
)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
MediaFileStreamsReadEvent(
|
MediaFileStreamsReadEvent(
|
||||||
metadata = event.makeDerivedEventInfo(EventStatus.Failed)
|
metadata = event.makeDerivedEventInfo(EventStatus.Failed, getProducerName())
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,7 +4,6 @@ import kotlinx.coroutines.delay
|
|||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import mu.KotlinLogging
|
import mu.KotlinLogging
|
||||||
import no.iktdev.eventi.core.WGson
|
|
||||||
import no.iktdev.eventi.data.EventMetadata
|
import no.iktdev.eventi.data.EventMetadata
|
||||||
import no.iktdev.eventi.data.EventStatus
|
import no.iktdev.eventi.data.EventStatus
|
||||||
import no.iktdev.mediaprocessing.processer.ProcesserEnv
|
import no.iktdev.mediaprocessing.processer.ProcesserEnv
|
||||||
@ -15,9 +14,7 @@ import no.iktdev.mediaprocessing.processer.ffmpeg.FfmpegTaskService
|
|||||||
import no.iktdev.mediaprocessing.processer.ffmpeg.progress.FfmpegDecodedProgress
|
import no.iktdev.mediaprocessing.processer.ffmpeg.progress.FfmpegDecodedProgress
|
||||||
import no.iktdev.mediaprocessing.processer.taskManager
|
import no.iktdev.mediaprocessing.processer.taskManager
|
||||||
import no.iktdev.mediaprocessing.shared.common.persistance.Status
|
import no.iktdev.mediaprocessing.shared.common.persistance.Status
|
||||||
import no.iktdev.mediaprocessing.shared.common.persistance.events
|
|
||||||
import no.iktdev.mediaprocessing.shared.common.task.Task
|
import no.iktdev.mediaprocessing.shared.common.task.Task
|
||||||
import no.iktdev.mediaprocessing.shared.contract.Events
|
|
||||||
import no.iktdev.mediaprocessing.shared.contract.data.EncodeArgumentData
|
import no.iktdev.mediaprocessing.shared.contract.data.EncodeArgumentData
|
||||||
import no.iktdev.mediaprocessing.shared.contract.data.EncodeWorkPerformedEvent
|
import no.iktdev.mediaprocessing.shared.contract.data.EncodeWorkPerformedEvent
|
||||||
import no.iktdev.mediaprocessing.shared.contract.data.EncodedData
|
import no.iktdev.mediaprocessing.shared.contract.data.EncodedData
|
||||||
@ -29,11 +26,15 @@ import java.io.File
|
|||||||
import java.time.Duration
|
import java.time.Duration
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
class EncodeServiceV2(
|
class EncodeService(
|
||||||
@Autowired var tasks: TaskCoordinator,
|
@Autowired var tasks: TaskCoordinator,
|
||||||
@Autowired private val reporter: Reporter
|
@Autowired private val reporter: Reporter
|
||||||
) : FfmpegTaskService(), TaskCoordinator.TaskEvents {
|
) : FfmpegTaskService(), TaskCoordinator.TaskEvents {
|
||||||
|
|
||||||
|
fun getProducerName(): String {
|
||||||
|
return this::class.java.simpleName
|
||||||
|
}
|
||||||
|
|
||||||
override val log = KotlinLogging.logger {}
|
override val log = KotlinLogging.logger {}
|
||||||
override val logDir = ProcesserEnv.encodeLogDirectory
|
override val logDir = ProcesserEnv.encodeLogDirectory
|
||||||
|
|
||||||
@ -139,7 +140,8 @@ class EncodeServiceV2(
|
|||||||
metadata = EventMetadata(
|
metadata = EventMetadata(
|
||||||
referenceId = task.referenceId,
|
referenceId = task.referenceId,
|
||||||
derivedFromEventId = task.eventId,
|
derivedFromEventId = task.eventId,
|
||||||
status = EventStatus.Success
|
status = EventStatus.Success,
|
||||||
|
source = getProducerName()
|
||||||
),
|
),
|
||||||
data = EncodedData(
|
data = EncodedData(
|
||||||
outputFile
|
outputFile
|
||||||
@ -168,7 +170,8 @@ class EncodeServiceV2(
|
|||||||
metadata = EventMetadata(
|
metadata = EventMetadata(
|
||||||
referenceId = task.referenceId,
|
referenceId = task.referenceId,
|
||||||
derivedFromEventId = task.eventId,
|
derivedFromEventId = task.eventId,
|
||||||
status = EventStatus.Failed
|
status = EventStatus.Failed,
|
||||||
|
source = getProducerName()
|
||||||
)
|
)
|
||||||
))
|
))
|
||||||
sendProgress(
|
sendProgress(
|
||||||
@ -24,11 +24,15 @@ import org.springframework.stereotype.Service
|
|||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
class ExtractServiceV2(
|
class ExtractService(
|
||||||
@Autowired var tasks: TaskCoordinator,
|
@Autowired var tasks: TaskCoordinator,
|
||||||
@Autowired private val reporter: Reporter
|
@Autowired private val reporter: Reporter
|
||||||
) : FfmpegTaskService(), TaskCoordinator.TaskEvents {
|
) : FfmpegTaskService(), TaskCoordinator.TaskEvents {
|
||||||
|
|
||||||
|
fun getProducerName(): String {
|
||||||
|
return this::class.java.simpleName
|
||||||
|
}
|
||||||
|
|
||||||
override val log = KotlinLogging.logger {}
|
override val log = KotlinLogging.logger {}
|
||||||
override val logDir = ProcesserEnv.encodeLogDirectory
|
override val logDir = ProcesserEnv.encodeLogDirectory
|
||||||
|
|
||||||
@ -111,7 +115,8 @@ class ExtractServiceV2(
|
|||||||
metadata = EventMetadata(
|
metadata = EventMetadata(
|
||||||
referenceId = task.referenceId,
|
referenceId = task.referenceId,
|
||||||
derivedFromEventId = task.eventId,
|
derivedFromEventId = task.eventId,
|
||||||
status = EventStatus.Success
|
status = EventStatus.Success,
|
||||||
|
source = getProducerName()
|
||||||
),
|
),
|
||||||
data = ExtractedData(
|
data = ExtractedData(
|
||||||
outputFile
|
outputFile
|
||||||
@ -141,7 +146,8 @@ class ExtractServiceV2(
|
|||||||
metadata = EventMetadata(
|
metadata = EventMetadata(
|
||||||
referenceId = task.referenceId,
|
referenceId = task.referenceId,
|
||||||
derivedFromEventId = task.eventId,
|
derivedFromEventId = task.eventId,
|
||||||
status = EventStatus.Failed
|
status = EventStatus.Failed,
|
||||||
|
source = getProducerName()
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -34,7 +34,7 @@ events_server_address = os.environ.get("DATABASE_ADDRESS") or "192.168.2.250" #
|
|||||||
events_server_port = os.environ.get("DATABASE_PORT") or "3306"
|
events_server_port = os.environ.get("DATABASE_PORT") or "3306"
|
||||||
events_server_database_name = os.environ.get("DATABASE_NAME_E") or "eventsV3" # "events"
|
events_server_database_name = os.environ.get("DATABASE_NAME_E") or "eventsV3" # "events"
|
||||||
events_server_username = os.environ.get("DATABASE_USERNAME") or "root"
|
events_server_username = os.environ.get("DATABASE_USERNAME") or "root"
|
||||||
events_server_password = os.environ.get("DATABASE_PASSWORD") or "shFZ27eL2x2NoxyEDBMfDWkvFO" #"root"
|
events_server_password = os.environ.get("DATABASE_PASSWORD") or "shFZ27eL2x2NoxyEDBMfDWkvFO" #"root" // default password
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -65,8 +65,8 @@ class EventsPullerThread(threading.Thread):
|
|||||||
GROUP BY referenceId
|
GROUP BY referenceId
|
||||||
HAVING
|
HAVING
|
||||||
SUM(event = 'event:media-read-base-info:performed') > 0
|
SUM(event = 'event:media-read-base-info:performed') > 0
|
||||||
AND SUM(event = 'event:media-metadata-search:performed') != 0
|
AND SUM(event = 'event:media-metadata-search:performed') = 0
|
||||||
AND SUM(event = 'event:media-process:completed') != 0
|
AND SUM(event = 'event:media-process:completed') = 0
|
||||||
)
|
)
|
||||||
AND event = 'event:media-read-base-info:performed';
|
AND event = 'event:media-read-base-info:performed';
|
||||||
""")
|
""")
|
||||||
@ -211,7 +211,8 @@ class MetadataEventHandler:
|
|||||||
eventId=str(uuid.uuid4()),
|
eventId=str(uuid.uuid4()),
|
||||||
derivedFromEventId=event.metadata.eventId,
|
derivedFromEventId=event.metadata.eventId,
|
||||||
status="Failed" if result is None else "Success",
|
status="Failed" if result is None else "Success",
|
||||||
created=datetime.now().isoformat()
|
created=datetime.now().isoformat(),
|
||||||
|
source="metadataApp"
|
||||||
),
|
),
|
||||||
data=result,
|
data=result,
|
||||||
eventType="EventMediaMetadataSearchPerformed"
|
eventType="EventMediaMetadataSearchPerformed"
|
||||||
|
|||||||
@ -11,6 +11,7 @@ class EventMetadata:
|
|||||||
referenceId: str
|
referenceId: str
|
||||||
status: str
|
status: str
|
||||||
created: datetime
|
created: datetime
|
||||||
|
source: str
|
||||||
|
|
||||||
def to_dict(self):
|
def to_dict(self):
|
||||||
return asdict(self)
|
return asdict(self)
|
||||||
@ -53,7 +54,8 @@ def json_to_media_event(json_data: str) -> MediaEvent:
|
|||||||
eventId=metadata_dict['eventId'],
|
eventId=metadata_dict['eventId'],
|
||||||
referenceId=metadata_dict['referenceId'],
|
referenceId=metadata_dict['referenceId'],
|
||||||
status=metadata_dict['status'],
|
status=metadata_dict['status'],
|
||||||
created=parse_datetime(metadata_dict['created'])
|
created=parse_datetime(metadata_dict['created']),
|
||||||
|
source=metadata_dict['source']
|
||||||
)
|
)
|
||||||
|
|
||||||
event_data = EventData(
|
event_data = EventData(
|
||||||
|
|||||||
@ -24,7 +24,8 @@ data class EventMetadata(
|
|||||||
val eventId: String = UUID.randomUUID().toString(),
|
val eventId: String = UUID.randomUUID().toString(),
|
||||||
val referenceId: String,
|
val referenceId: String,
|
||||||
val status: EventStatus,
|
val status: EventStatus,
|
||||||
val created: LocalDateTime = LocalDateTime.now()
|
val created: LocalDateTime = LocalDateTime.now(),
|
||||||
|
val source: String = "Unknown producer"
|
||||||
)
|
)
|
||||||
|
|
||||||
enum class EventStatus {
|
enum class EventStatus {
|
||||||
|
|||||||
@ -19,6 +19,7 @@ abstract class EventListenerImpl<T: EventImpl, E: EventsManagerImpl<T>> {
|
|||||||
onReady()
|
onReady()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
abstract fun getProducerName(): String
|
||||||
|
|
||||||
protected open fun onProduceEvent(event: T) {
|
protected open fun onProduceEvent(event: T) {
|
||||||
coordinator?.produceNewEvent(event) ?: {
|
coordinator?.produceNewEvent(event) ?: {
|
||||||
@ -82,11 +83,12 @@ abstract class EventListenerImpl<T: EventImpl, E: EventsManagerImpl<T>> {
|
|||||||
*/
|
*/
|
||||||
abstract fun onEventsReceived(incomingEvent: ConsumableEvent<T>, events: List<T>)
|
abstract fun onEventsReceived(incomingEvent: ConsumableEvent<T>, events: List<T>)
|
||||||
|
|
||||||
fun T.makeDerivedEventInfo(status: EventStatus): EventMetadata {
|
fun T.makeDerivedEventInfo(status: EventStatus, source: String): EventMetadata {
|
||||||
return EventMetadata(
|
return EventMetadata(
|
||||||
referenceId = this.metadata.referenceId,
|
referenceId = this.metadata.referenceId,
|
||||||
derivedFromEventId = this.metadata.eventId,
|
derivedFromEventId = this.metadata.eventId,
|
||||||
status = status
|
status = status,
|
||||||
|
source = source
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -12,6 +12,11 @@ import org.springframework.stereotype.Service
|
|||||||
|
|
||||||
@Service
|
@Service
|
||||||
class FirstEventListener() : MockDataEventListener() {
|
class FirstEventListener() : MockDataEventListener() {
|
||||||
|
|
||||||
|
override fun getProducerName(): String {
|
||||||
|
return this::class.java.simpleName
|
||||||
|
}
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
override var coordinator: MockEventCoordinator? = null
|
override var coordinator: MockEventCoordinator? = null
|
||||||
|
|
||||||
@ -30,7 +35,7 @@ class FirstEventListener() : MockDataEventListener() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onEventsReceived(incomingEvent: ConsumableEvent<EventImpl>, events: List<EventImpl>) {
|
override fun onEventsReceived(incomingEvent: ConsumableEvent<EventImpl>, events: List<EventImpl>) {
|
||||||
val info = incomingEvent.consume()!!.makeDerivedEventInfo(EventStatus.Success)
|
val info = incomingEvent.consume()!!.makeDerivedEventInfo(EventStatus.Success, getProducerName())
|
||||||
onProduceEvent(FirstEvent(
|
onProduceEvent(FirstEvent(
|
||||||
eventType = produceEvent,
|
eventType = produceEvent,
|
||||||
metadata = info,
|
metadata = info,
|
||||||
|
|||||||
@ -14,6 +14,11 @@ import org.springframework.stereotype.Service
|
|||||||
|
|
||||||
@Service
|
@Service
|
||||||
class ForthEventListener() : MockDataEventListener() {
|
class ForthEventListener() : MockDataEventListener() {
|
||||||
|
|
||||||
|
override fun getProducerName(): String {
|
||||||
|
return this::class.java.simpleName
|
||||||
|
}
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
override var coordinator: MockEventCoordinator? = null
|
override var coordinator: MockEventCoordinator? = null
|
||||||
|
|
||||||
@ -35,7 +40,7 @@ class ForthEventListener() : MockDataEventListener() {
|
|||||||
val event = incomingEvent.consume()
|
val event = incomingEvent.consume()
|
||||||
if (event == null)
|
if (event == null)
|
||||||
return
|
return
|
||||||
val info = event.makeDerivedEventInfo(EventStatus.Success)
|
val info = event.makeDerivedEventInfo(EventStatus.Success, getProducerName())
|
||||||
onProduceEvent(InitEvent(
|
onProduceEvent(InitEvent(
|
||||||
eventType = produceEvent,
|
eventType = produceEvent,
|
||||||
metadata = info,
|
metadata = info,
|
||||||
|
|||||||
@ -12,6 +12,11 @@ import org.springframework.stereotype.Service
|
|||||||
|
|
||||||
@Service
|
@Service
|
||||||
class SecondEventListener() : MockDataEventListener() {
|
class SecondEventListener() : MockDataEventListener() {
|
||||||
|
|
||||||
|
override fun getProducerName(): String {
|
||||||
|
return this::class.java.simpleName
|
||||||
|
}
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
override var coordinator: MockEventCoordinator? = null
|
override var coordinator: MockEventCoordinator? = null
|
||||||
|
|
||||||
@ -33,7 +38,7 @@ class SecondEventListener() : MockDataEventListener() {
|
|||||||
val event = incomingEvent.consume()
|
val event = incomingEvent.consume()
|
||||||
if (event == null)
|
if (event == null)
|
||||||
return
|
return
|
||||||
val info = event.makeDerivedEventInfo(EventStatus.Success)
|
val info = event.makeDerivedEventInfo(EventStatus.Success,getProducerName())
|
||||||
onProduceEvent(SecondEvent(
|
onProduceEvent(SecondEvent(
|
||||||
eventType = produceEvent,
|
eventType = produceEvent,
|
||||||
metadata = info
|
metadata = info
|
||||||
|
|||||||
@ -15,6 +15,11 @@ import org.springframework.stereotype.Service
|
|||||||
|
|
||||||
@Service
|
@Service
|
||||||
class ThirdEventListener() : MockDataEventListener() {
|
class ThirdEventListener() : MockDataEventListener() {
|
||||||
|
|
||||||
|
override fun getProducerName(): String {
|
||||||
|
return this::class.java.simpleName
|
||||||
|
}
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
override var coordinator: MockEventCoordinator? = null
|
override var coordinator: MockEventCoordinator? = null
|
||||||
|
|
||||||
@ -36,11 +41,11 @@ class ThirdEventListener() : MockDataEventListener() {
|
|||||||
val event = incomingEvent.consume()
|
val event = incomingEvent.consume()
|
||||||
if (event == null)
|
if (event == null)
|
||||||
return
|
return
|
||||||
val info = event.makeDerivedEventInfo(EventStatus.Success)
|
val info = event.makeDerivedEventInfo(EventStatus.Success, getProducerName())
|
||||||
(event as SecondEvent).data.elements.forEach { element ->
|
(event as SecondEvent).data.elements.forEach { element ->
|
||||||
onProduceEvent(ThirdEvent(
|
onProduceEvent(ThirdEvent(
|
||||||
eventType = produceEvent,
|
eventType = produceEvent,
|
||||||
metadata = event.makeDerivedEventInfo(EventStatus.Success),
|
metadata = event.makeDerivedEventInfo(EventStatus.Success, getProducerName()),
|
||||||
data = element
|
data = element
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user