|
1 | 1 | package no.nav.paw.bekreftelse.context
|
2 | 2 |
|
| 3 | +import io.confluent.kafka.streams.serdes.avro.SpecificAvroSerde |
3 | 4 | import io.micrometer.prometheusmetrics.PrometheusConfig
|
4 | 5 | import io.micrometer.prometheusmetrics.PrometheusMeterRegistry
|
5 | 6 | import no.nav.paw.bekreftelse.config.APPLICATION_CONFIG
|
6 | 7 | import no.nav.paw.bekreftelse.config.ApplicationConfig
|
7 | 8 | import no.nav.paw.bekreftelse.config.SERVER_CONFIG
|
8 | 9 | import no.nav.paw.bekreftelse.config.ServerConfig
|
| 10 | +import no.nav.paw.bekreftelse.topology.buildKafkaStreamsList |
9 | 11 | import no.nav.paw.config.hoplite.loadNaisOrLocalConfiguration
|
10 | 12 | import no.nav.paw.health.repository.HealthIndicatorRepository
|
11 |
| -import no.nav.paw.kafka.config.KAFKA_CONFIG_WITH_SCHEME_REG |
| 13 | +import no.nav.paw.kafka.config.KAFKA_STREAMS_CONFIG_WITH_SCHEME_REG |
12 | 14 | import no.nav.paw.kafka.config.KafkaConfig
|
| 15 | +import no.nav.paw.kafka.factory.KafkaStreamsFactory |
| 16 | +import org.apache.kafka.common.serialization.Serdes |
| 17 | +import org.apache.kafka.streams.KafkaStreams |
13 | 18 |
|
14 | 19 | data class ApplicationContext(
|
15 | 20 | val serverConfig: ServerConfig,
|
16 | 21 | val applicationConfig: ApplicationConfig,
|
17 | 22 | val prometheusMeterRegistry: PrometheusMeterRegistry,
|
18 |
| - val healthIndicatorRepository: HealthIndicatorRepository |
| 23 | + val healthIndicatorRepository: HealthIndicatorRepository, |
| 24 | + val kafkaStreamsList: List<KafkaStreams> |
19 | 25 | ) {
|
20 | 26 | companion object {
|
21 | 27 | fun create(): ApplicationContext {
|
22 | 28 | val serverConfig = loadNaisOrLocalConfiguration<ServerConfig>(SERVER_CONFIG)
|
23 | 29 | val applicationConfig = loadNaisOrLocalConfiguration<ApplicationConfig>(APPLICATION_CONFIG)
|
24 |
| - val kafkaConfig = loadNaisOrLocalConfiguration<KafkaConfig>(KAFKA_CONFIG_WITH_SCHEME_REG) |
| 30 | + val kafkaConfig = loadNaisOrLocalConfiguration<KafkaConfig>(KAFKA_STREAMS_CONFIG_WITH_SCHEME_REG) |
25 | 31 |
|
26 | 32 | val prometheusMeterRegistry = PrometheusMeterRegistry(PrometheusConfig.DEFAULT)
|
27 | 33 | val healthIndicatorRepository = HealthIndicatorRepository()
|
28 | 34 |
|
| 35 | + val applicationIdSuffix = applicationConfig.kafkaTopology.applicationIdSuffix |
| 36 | + val kafkaStreamsFactory = KafkaStreamsFactory(applicationIdSuffix, kafkaConfig) |
| 37 | + .withDefaultKeySerde(Serdes.Long()::class) |
| 38 | + .withDefaultValueSerde(SpecificAvroSerde::class) |
| 39 | + .addPrometheusMeterRegistryToConfig(prometheusMeterRegistry) |
| 40 | + |
| 41 | + val kafkaStreams = kafkaStreamsFactory.buildKafkaStreamsList(applicationConfig, healthIndicatorRepository) |
| 42 | + |
29 | 43 | return ApplicationContext(
|
30 | 44 | serverConfig,
|
31 | 45 | applicationConfig,
|
32 | 46 | prometheusMeterRegistry,
|
33 |
| - healthIndicatorRepository |
| 47 | + healthIndicatorRepository, |
| 48 | + kafkaStreams |
34 | 49 | )
|
35 | 50 | }
|
36 | 51 | }
|
|
0 commit comments