move kafka topics creator into events-processors
This commit is contained in:
parent
1c9a93b457
commit
6035c2eaa0
7 changed files with 32 additions and 16 deletions
|
|
@ -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()
|
|
||||||
}
|
|
||||||
|
|
@ -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()
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
}
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,9 @@ import kotlinx.coroutines.launch
|
||||||
|
|
||||||
|
|
||||||
suspend fun main(): Unit = coroutineScope {
|
suspend fun main(): Unit = coroutineScope {
|
||||||
|
|
||||||
|
createTopics()
|
||||||
|
|
||||||
launch {
|
launch {
|
||||||
splitPackets()
|
splitPackets()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue