@@ -5,6 +5,8 @@ import com.fasterxml.jackson.databind.ObjectMapper
5
5
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
6
6
import com.fasterxml.jackson.module.kotlin.readValue
7
7
import com.fasterxml.jackson.module.kotlin.registerKotlinModule
8
+ import io.opentelemetry.api.trace.Span
9
+ import io.opentelemetry.instrumentation.annotations.WithSpan
8
10
import java.time.Duration
9
11
import java.util.UUID
10
12
import kotlinx.coroutines.CoroutineScope
@@ -28,6 +30,7 @@ import no.nav.syfo.syfosmvarsel.util.KafkaFactory.Companion.getBrukernotifikasjo
28
30
import no.nav.syfo.syfosmvarsel.util.KafkaFactory.Companion.getKafkaStatusConsumerAiven
29
31
import no.nav.syfo.syfosmvarsel.util.KafkaFactory.Companion.getNyKafkaAivenConsumer
30
32
import no.nav.syfo.util.util.Unbounded
33
+ import org.apache.kafka.clients.consumer.ConsumerRecord
31
34
import org.apache.kafka.clients.consumer.KafkaConsumer
32
35
import org.slf4j.Logger
33
36
import org.slf4j.LoggerFactory
@@ -94,7 +97,7 @@ fun createListener(
94
97
log.error(
95
98
" En uhåndtert feil oppstod, applikasjonen restarter {}" ,
96
99
fields(e.loggingMeta),
97
- e.cause
100
+ e.cause,
98
101
)
99
102
} finally {
100
103
applicationState.alive = false
@@ -118,15 +121,15 @@ fun launchListeners(
118
121
nyKafkaConsumerAiven,
119
122
nySykmeldingService,
120
123
avvistSykmeldingService,
121
- environment
124
+ environment,
122
125
)
123
126
}
124
127
125
128
createListener(applicationState) {
126
129
blockingApplicationLogicStatusendringAiven(
127
130
applicationState,
128
131
statusendringService,
129
- kafkaStatusConsumerAiven
132
+ kafkaStatusConsumerAiven,
130
133
)
131
134
}
132
135
}
@@ -143,33 +146,46 @@ suspend fun blockingApplicationLogicNySykmelding(
143
146
.poll(Duration .ofMillis(1000 ))
144
147
.filterNot { it.value() == null }
145
148
.forEach {
146
- val receivedSykmelding: ReceivedSykmelding = objectMapper.readValue(it.value())
147
-
148
- val loggingMeta =
149
- LoggingMeta (
150
- mottakId = receivedSykmelding.navLogId,
151
- orgNr = receivedSykmelding.legekontorOrgNr,
152
- msgId = receivedSykmelding.msgId,
153
- sykmeldingId = receivedSykmelding.sykmelding.id,
154
- )
155
- wrapExceptions(loggingMeta) {
156
- when (it.topic()) {
157
- environment.avvistSykmeldingTopicAiven ->
158
- avvistSykmeldingService.opprettVarselForAvvisteSykmeldinger(
159
- receivedSykmelding,
160
- loggingMeta
161
- )
162
- else ->
163
- nySykmeldingService.opprettVarselForNySykmelding(
164
- receivedSykmelding,
165
- loggingMeta
166
- )
167
- }
168
- }
149
+ handleNySykmelding(it, environment, avvistSykmeldingService, nySykmeldingService)
169
150
}
170
151
}
171
152
}
172
153
154
+ @WithSpan
155
+ private suspend fun handleNySykmelding (
156
+ message : ConsumerRecord <String , String >,
157
+ environment : Environment ,
158
+ avvistSykmeldingService : AvvistSykmeldingService ,
159
+ nySykmeldingService : NySykmeldingService
160
+ ) {
161
+ val receivedSykmelding: ReceivedSykmelding = objectMapper.readValue(message.value())
162
+
163
+ val currentSpan = Span .current()
164
+ currentSpan.setAttribute(" sykmeldingId" , receivedSykmelding.sykmelding.id)
165
+
166
+ val loggingMeta =
167
+ LoggingMeta (
168
+ mottakId = receivedSykmelding.navLogId,
169
+ orgNr = receivedSykmelding.legekontorOrgNr,
170
+ msgId = receivedSykmelding.msgId,
171
+ sykmeldingId = receivedSykmelding.sykmelding.id,
172
+ )
173
+ wrapExceptions(loggingMeta) {
174
+ when (message.topic()) {
175
+ environment.avvistSykmeldingTopicAiven ->
176
+ avvistSykmeldingService.opprettVarselForAvvisteSykmeldinger(
177
+ receivedSykmelding,
178
+ loggingMeta,
179
+ )
180
+ else ->
181
+ nySykmeldingService.opprettVarselForNySykmelding(
182
+ receivedSykmelding,
183
+ loggingMeta,
184
+ )
185
+ }
186
+ }
187
+ }
188
+
173
189
fun blockingApplicationLogicStatusendringAiven (
174
190
applicationState : ApplicationState ,
175
191
statusendringService : StatusendringService ,
@@ -180,21 +196,31 @@ fun blockingApplicationLogicStatusendringAiven(
180
196
.poll(Duration .ofMillis(1000 ))
181
197
.filter { it.value() != null }
182
198
.filter { it.key().erUuid() }
183
- .forEach {
184
- val sykmeldingStatusKafkaMessageDTO: SykmeldingStatusKafkaMessageDTO = it.value()
185
- try {
186
- log.info(
187
- " Mottatt statusmelding fra aiven ${sykmeldingStatusKafkaMessageDTO.kafkaMetadata.sykmeldingId} "
188
- )
189
- statusendringService.handterStatusendring(sykmeldingStatusKafkaMessageDTO)
190
- } catch (e: Exception ) {
191
- log.error(
192
- " Noe gikk galt ved behandling av statusendring fra aiven for sykmelding med id {}" ,
193
- sykmeldingStatusKafkaMessageDTO.kafkaMetadata.sykmeldingId
194
- )
195
- throw e
196
- }
197
- }
199
+ .forEach { handleStatusEndring(it, statusendringService) }
200
+ }
201
+ }
202
+
203
+ @WithSpan
204
+ private fun handleStatusEndring (
205
+ it : ConsumerRecord <String , SykmeldingStatusKafkaMessageDTO >,
206
+ statusendringService : StatusendringService
207
+ ) {
208
+ val sykmeldingStatusKafkaMessageDTO: SykmeldingStatusKafkaMessageDTO = it.value()
209
+
210
+ val currentSpan = Span .current()
211
+ currentSpan.setAttribute(" sykmeldingId" , sykmeldingStatusKafkaMessageDTO.event.sykmeldingId)
212
+
213
+ try {
214
+ log.info(
215
+ " Mottatt statusmelding fra aiven ${sykmeldingStatusKafkaMessageDTO.kafkaMetadata.sykmeldingId} " ,
216
+ )
217
+ statusendringService.handterStatusendring(sykmeldingStatusKafkaMessageDTO)
218
+ } catch (e: Exception ) {
219
+ log.error(
220
+ " Noe gikk galt ved behandling av statusendring fra aiven for sykmelding med id {}" ,
221
+ sykmeldingStatusKafkaMessageDTO.kafkaMetadata.sykmeldingId,
222
+ )
223
+ throw e
198
224
}
199
225
}
200
226
0 commit comments