move kafka topics creator into events-processors

This commit is contained in:
Adam 2022-10-08 14:16:43 +02:00
parent 1c9a93b457
commit 6035c2eaa0
7 changed files with 32 additions and 16 deletions

View file

@ -1,10 +0,0 @@
package dev.adamko.kafkatorio.processor.admin
import dev.adamko.kafkatorio.processor.config.ApplicationProperties
fun main() {
val appProps = ApplicationProperties.load()
val admin = KafkatorioKafkaAdmin(appProps)
admin.createKafkatorioTopics()
}

View file

@ -18,12 +18,12 @@ import org.apache.kafka.streams.Topology
import org.apache.kafka.streams.TopologyDescription import org.apache.kafka.streams.TopologyDescription
private val appProps = ApplicationProperties.load()
suspend fun launchTopology( suspend fun launchTopology(
id: String, id: String,
topology: Topology, topology: Topology,
additionalProperties: Map<String, String> = mapOf(), additionalProperties: Map<String, String> = mapOf(),
appProps: ApplicationProperties,
): Unit = coroutineScope { ): Unit = coroutineScope {
val props: Properties = appProps.kafkaStreamsConfig.toProperties() val props: Properties = appProps.kafkaStreamsConfig.toProperties()

View file

@ -0,0 +1,11 @@
package dev.adamko.kafkatorio.processors
import dev.adamko.kafkatorio.processor.admin.KafkatorioKafkaAdmin
import dev.adamko.kafkatorio.processor.config.ApplicationProperties
fun createTopics(
appProps: ApplicationProperties = ApplicationProperties.load(),
) {
val admin = KafkatorioKafkaAdmin(appProps)
admin.createKafkatorioTopics()
}

View file

@ -1,5 +1,6 @@
package dev.adamko.kafkatorio.processors package dev.adamko.kafkatorio.processors
import dev.adamko.kafkatorio.processor.config.ApplicationProperties
import dev.adamko.kafkatorio.processor.core.launchTopology import dev.adamko.kafkatorio.processor.core.launchTopology
import dev.adamko.kafkatorio.schema.common.FactorioServerId import dev.adamko.kafkatorio.schema.common.FactorioServerId
import dev.adamko.kafkatorio.schema.common.PrototypeHashCode import dev.adamko.kafkatorio.schema.common.PrototypeHashCode
@ -22,6 +23,7 @@ suspend fun groupEntitiesMapChunks(
layer: ServerMapTileLayer, layer: ServerMapTileLayer,
colouredUpdatesStreamTopic: String, colouredUpdatesStreamTopic: String,
colouredChunkStateTopic: String, colouredChunkStateTopic: String,
appProps: ApplicationProperties = ApplicationProperties.load(),
) { ) {
val builder = StreamsBuilder() val builder = StreamsBuilder()
@ -50,5 +52,5 @@ suspend fun groupEntitiesMapChunks(
colouredChunkStateTopic, colouredChunkStateTopic,
) )
launchTopology("groupTilesMapChunks.${layer.dir}", topology) launchTopology("groupTilesMapChunks.${layer.dir}", topology, appProps = appProps)
} }

View file

@ -1,5 +1,6 @@
package dev.adamko.kafkatorio.processors package dev.adamko.kafkatorio.processors
import dev.adamko.kafkatorio.processor.config.ApplicationProperties
import dev.adamko.kafkatorio.processor.core.launchTopology import dev.adamko.kafkatorio.processor.core.launchTopology
import dev.adamko.kafkatorio.schema.common.FactorioServerId import dev.adamko.kafkatorio.schema.common.FactorioServerId
import dev.adamko.kafkatorio.schema.common.ServerMapTileLayer import dev.adamko.kafkatorio.schema.common.ServerMapTileLayer
@ -11,7 +12,9 @@ import org.apache.kafka.streams.kstream.KStream
/** Terrain tiles */ /** Terrain tiles */
suspend fun groupTilesMapChunks() { suspend fun groupTilesMapChunks(
appProps: ApplicationProperties = ApplicationProperties.load(),
) {
val builder = StreamsBuilder() val builder = StreamsBuilder()
val protosStream: KStream<FactorioServerId, PrototypesUpdate> = val protosStream: KStream<FactorioServerId, PrototypesUpdate> =
@ -19,5 +22,9 @@ suspend fun groupTilesMapChunks() {
val topology = colourMapChunks(builder, protosStream) val topology = colourMapChunks(builder, protosStream)
launchTopology("groupTilesMapChunks.${ServerMapTileLayer.TERRAIN.dir}", topology) launchTopology(
id = "groupTilesMapChunks.${ServerMapTileLayer.TERRAIN.dir}",
topology = topology,
appProps = appProps
)
} }

View file

@ -10,6 +10,9 @@ import kotlinx.coroutines.launch
suspend fun main(): Unit = coroutineScope { suspend fun main(): Unit = coroutineScope {
createTopics()
launch { launch {
splitPackets() splitPackets()
} }

View file

@ -1,17 +1,20 @@
package dev.adamko.kafkatorio.processors package dev.adamko.kafkatorio.processors
import dev.adamko.kafkatorio.processor.config.ApplicationProperties
import dev.adamko.kafkatorio.processor.core.launchTopology import dev.adamko.kafkatorio.processor.core.launchTopology
import dev.adamko.kafkatorio.server.processor.topology.factorioServerPacketStream import dev.adamko.kafkatorio.server.processor.topology.factorioServerPacketStream
import dev.adamko.kafkatorio.server.processor.topology.splitFactorioServerPacketStream import dev.adamko.kafkatorio.server.processor.topology.splitFactorioServerPacketStream
import org.apache.kafka.streams.StreamsBuilder import org.apache.kafka.streams.StreamsBuilder
suspend fun splitPackets() { suspend fun splitPackets(
appProps: ApplicationProperties = ApplicationProperties.load(),
) {
val builder = StreamsBuilder() val builder = StreamsBuilder()
val packets = factorioServerPacketStream(builder) val packets = factorioServerPacketStream(builder)
splitFactorioServerPacketStream(packets) splitFactorioServerPacketStream(packets)
val topology = builder.build() val topology = builder.build()
launchTopology("splitPackets", topology) launchTopology("splitPackets", topology, appProps = appProps)
} }