@@ -10,20 +10,18 @@ import no.nav.paw.arbeidssoekerregisteret.utils.periodeCounter
10
10
import no.nav.paw.arbeidssoekerregisteret.utils.varselCounter
11
11
import no.nav.paw.arbeidssoekerregisteret.utils.varselHendelseCounter
12
12
import no.nav.paw.arbeidssokerregisteret.api.v1.Periode
13
+ import no.nav.paw.bekreftelse.internehendelser.BekreftelseHendelse
13
14
import no.nav.paw.bekreftelse.internehendelser.BekreftelseHendelseSerde
14
15
import no.nav.paw.config.env.RuntimeEnvironment
15
16
import no.nav.paw.config.env.namespaceOrDefaultForLocal
16
- import no.nav.paw.logging.logger.buildNamedLogger
17
17
import org.apache.kafka.common.serialization.Serdes
18
18
import org.apache.kafka.streams.KeyValue
19
19
import org.apache.kafka.streams.StreamsBuilder
20
20
import org.apache.kafka.streams.kstream.Consumed
21
21
import org.apache.kafka.streams.kstream.Produced
22
+ import org.apache.kafka.streams.kstream.ValueJoiner
22
23
23
- private val logger = buildNamedLogger(" bekreftelse.varsler.topology" )
24
-
25
- fun StreamsBuilder.bekreftelseKafkaTopology (
26
- runtimeEnvironment : RuntimeEnvironment ,
24
+ fun StreamsBuilder.periodeKafkaTopology (
27
25
kafkaTopicsConfig : KafkaTopologyConfig ,
28
26
meterRegistry : MeterRegistry ,
29
27
varselService : VarselService
@@ -34,11 +32,35 @@ fun StreamsBuilder.bekreftelseKafkaTopology(
34
32
.foreach { _, periode ->
35
33
varselService.mottaPeriode(periode)
36
34
}
35
+ }
36
+ return this
37
+ }
38
+
39
+ class BekreftelseValueJoiner : ValueJoiner <BekreftelseHendelse , Periode , Pair <Periode ?, BekreftelseHendelse ?>> {
40
+ override fun apply (bekreftelse : BekreftelseHendelse ? , periode : Periode ? ): Pair <Periode ?, BekreftelseHendelse ?> {
41
+ return periode to bekreftelse
42
+ }
43
+ }
37
44
38
- stream(bekreftelseHendelseTopic, Consumed .with (Serdes .Long (), BekreftelseHendelseSerde ()))
39
- .peek { _, hendelse -> meterRegistry.bekreftelseHendelseCounter(" read" , hendelse) }
40
- .flatMapValues { _, hendelse ->
41
- varselService.mottaBekreftelseHendelse(hendelse)
45
+ fun StreamsBuilder.bekreftelseKafkaTopology (
46
+ runtimeEnvironment : RuntimeEnvironment ,
47
+ kafkaTopicsConfig : KafkaTopologyConfig ,
48
+ meterRegistry : MeterRegistry ,
49
+ varselService : VarselService
50
+ ): StreamsBuilder {
51
+ with (kafkaTopicsConfig) {
52
+ val periodeTable = table<Long , Periode >(periodeTopic)
53
+ val bekreftelseStream = stream(
54
+ bekreftelseHendelseTopic,
55
+ Consumed .with (Serdes .Long (), BekreftelseHendelseSerde ())
56
+ )
57
+
58
+ bekreftelseStream.leftJoin(periodeTable, BekreftelseValueJoiner ())
59
+ .peek { _, (_, hendelse) ->
60
+ if (hendelse != null ) meterRegistry.bekreftelseHendelseCounter(" read" , hendelse)
61
+ }
62
+ .flatMapValues { _, value ->
63
+ varselService.mottaBekreftelseHendelse(value)
42
64
}
43
65
.peek { _, melding -> meterRegistry.varselCounter(runtimeEnvironment, melding) }
44
66
.filter { _, _ -> false } // TODO: Disable utsending av varsler
@@ -57,7 +79,7 @@ fun StreamsBuilder.varselHendelserKafkaTopology(
57
79
with (kafkaTopicsConfig) {
58
80
stream(tmsVarselHendelseTopic, Consumed .with (Serdes .String (), VarselHendelseJsonSerde ()))
59
81
.filter { _, hendelse -> hendelse.namespace == runtimeEnvironment.namespaceOrDefaultForLocal() }
60
- .peek { _, hendelse -> meterRegistry.varselHendelseCounter(hendelse) }
82
+ .peek { _, hendelse -> meterRegistry.varselHendelseCounter(" read " , hendelse) }
61
83
.filter { _, hendelse -> hendelse.varseltype == VarselType .OPPGAVE }
62
84
.foreach { _, hendelse ->
63
85
varselService.mottaVarselHendelse(hendelse)
0 commit comments