mirror of
https://github.com/pcvolkmer/etl-processor.git
synced 2025-04-20 01:36:50 +00:00
Explicit producer topic configuration
This commit is contained in:
parent
3dcee41569
commit
ec76c775d9
@ -43,9 +43,10 @@ class AppKafkaConfiguration {
|
|||||||
@Bean
|
@Bean
|
||||||
fun kafkaMtbFileSender(
|
fun kafkaMtbFileSender(
|
||||||
kafkaTemplate: KafkaTemplate<String, String>,
|
kafkaTemplate: KafkaTemplate<String, String>,
|
||||||
|
kafkaTargetProperties: KafkaTargetProperties,
|
||||||
objectMapper: ObjectMapper
|
objectMapper: ObjectMapper
|
||||||
): MtbFileSender {
|
): MtbFileSender {
|
||||||
return KafkaMtbFileSender(kafkaTemplate, objectMapper)
|
return KafkaMtbFileSender(kafkaTemplate, kafkaTargetProperties, objectMapper)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@ -54,7 +55,7 @@ class AppKafkaConfiguration {
|
|||||||
kafkaTargetProperties: KafkaTargetProperties,
|
kafkaTargetProperties: KafkaTargetProperties,
|
||||||
kafkaResponseProcessor: KafkaResponseProcessor
|
kafkaResponseProcessor: KafkaResponseProcessor
|
||||||
): KafkaMessageListenerContainer<String, String> {
|
): KafkaMessageListenerContainer<String, String> {
|
||||||
val containerProperties = ContainerProperties(kafkaTargetProperties.responseTopic);
|
val containerProperties = ContainerProperties(kafkaTargetProperties.responseTopic)
|
||||||
containerProperties.messageListener = kafkaResponseProcessor
|
containerProperties.messageListener = kafkaResponseProcessor
|
||||||
return KafkaMessageListenerContainer(consumerFactory, containerProperties)
|
return KafkaMessageListenerContainer(consumerFactory, containerProperties)
|
||||||
}
|
}
|
||||||
|
@ -22,11 +22,13 @@ package dev.dnpm.etl.processor.output
|
|||||||
import com.fasterxml.jackson.databind.ObjectMapper
|
import com.fasterxml.jackson.databind.ObjectMapper
|
||||||
import de.ukw.ccc.bwhc.dto.Consent
|
import de.ukw.ccc.bwhc.dto.Consent
|
||||||
import de.ukw.ccc.bwhc.dto.MtbFile
|
import de.ukw.ccc.bwhc.dto.MtbFile
|
||||||
|
import dev.dnpm.etl.processor.config.KafkaTargetProperties
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
import org.springframework.kafka.core.KafkaTemplate
|
import org.springframework.kafka.core.KafkaTemplate
|
||||||
|
|
||||||
class KafkaMtbFileSender(
|
class KafkaMtbFileSender(
|
||||||
private val kafkaTemplate: KafkaTemplate<String, String>,
|
private val kafkaTemplate: KafkaTemplate<String, String>,
|
||||||
|
private val kafkaTargetProperties: KafkaTargetProperties,
|
||||||
private val objectMapper: ObjectMapper
|
private val objectMapper: ObjectMapper
|
||||||
) : MtbFileSender {
|
) : MtbFileSender {
|
||||||
|
|
||||||
@ -34,13 +36,14 @@ class KafkaMtbFileSender(
|
|||||||
|
|
||||||
override fun send(request: MtbFileSender.MtbFileRequest): MtbFileSender.Response {
|
override fun send(request: MtbFileSender.MtbFileRequest): MtbFileSender.Response {
|
||||||
return try {
|
return try {
|
||||||
val result = kafkaTemplate.sendDefault(
|
val result = kafkaTemplate.send(
|
||||||
header(request),
|
kafkaTargetProperties.topic,
|
||||||
|
key(request),
|
||||||
objectMapper.writeValueAsString(request.mtbFile)
|
objectMapper.writeValueAsString(request.mtbFile)
|
||||||
)
|
)
|
||||||
if (result.get() != null) {
|
if (result.get() != null) {
|
||||||
logger.debug("Sent file via KafkaMtbFileSender")
|
logger.debug("Sent file via KafkaMtbFileSender")
|
||||||
MtbFileSender.Response(MtbFileSender.ResponseStatus.SUCCESS)
|
MtbFileSender.Response(MtbFileSender.ResponseStatus.UNKNOWN)
|
||||||
} else {
|
} else {
|
||||||
MtbFileSender.Response(MtbFileSender.ResponseStatus.ERROR)
|
MtbFileSender.Response(MtbFileSender.ResponseStatus.ERROR)
|
||||||
}
|
}
|
||||||
@ -61,14 +64,15 @@ class KafkaMtbFileSender(
|
|||||||
.build()
|
.build()
|
||||||
|
|
||||||
return try {
|
return try {
|
||||||
val result = kafkaTemplate.sendDefault(
|
val result = kafkaTemplate.send(
|
||||||
header(request),
|
kafkaTargetProperties.topic,
|
||||||
|
key(request),
|
||||||
objectMapper.writeValueAsString(dummyMtbFile)
|
objectMapper.writeValueAsString(dummyMtbFile)
|
||||||
)
|
)
|
||||||
|
|
||||||
if (result.get() != null) {
|
if (result.get() != null) {
|
||||||
logger.debug("Sent deletion request via KafkaMtbFileSender")
|
logger.debug("Sent deletion request via KafkaMtbFileSender")
|
||||||
MtbFileSender.Response(MtbFileSender.ResponseStatus.SUCCESS)
|
MtbFileSender.Response(MtbFileSender.ResponseStatus.UNKNOWN)
|
||||||
} else {
|
} else {
|
||||||
MtbFileSender.Response(MtbFileSender.ResponseStatus.ERROR)
|
MtbFileSender.Response(MtbFileSender.ResponseStatus.ERROR)
|
||||||
}
|
}
|
||||||
@ -78,13 +82,13 @@ class KafkaMtbFileSender(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun header(request: MtbFileSender.MtbFileRequest): String {
|
private fun key(request: MtbFileSender.MtbFileRequest): String {
|
||||||
return "{\"pid\": \"${request.mtbFile.patient.id}\", " +
|
return "{\"pid\": \"${request.mtbFile.patient.id}\", " +
|
||||||
"\"eid\": \"${request.mtbFile.episode.id}\", " +
|
"\"eid\": \"${request.mtbFile.episode.id}\", " +
|
||||||
"\"requestId\": \"${request.requestId}\"}"
|
"\"requestId\": \"${request.requestId}\"}"
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun header(request: MtbFileSender.DeleteRequest): String {
|
private fun key(request: MtbFileSender.DeleteRequest): String {
|
||||||
return "{\"pid\": \"${request.patientId}\", " +
|
return "{\"pid\": \"${request.patientId}\", " +
|
||||||
"\"requestId\": \"${request.requestId}\"}"
|
"\"requestId\": \"${request.requestId}\"}"
|
||||||
}
|
}
|
||||||
|
@ -42,6 +42,9 @@ class KafkaResponseProcessor(
|
|||||||
val responseKey = objectMapper.readValue(data.key(), ResponseKey::class.java)
|
val responseKey = objectMapper.readValue(data.key(), ResponseKey::class.java)
|
||||||
requestRepository.findByUuidEquals(responseKey.requestId).ifPresent {
|
requestRepository.findByUuidEquals(responseKey.requestId).ifPresent {
|
||||||
val responseBody = objectMapper.readValue(data.value(), ResponseBody::class.java)
|
val responseBody = objectMapper.readValue(data.value(), ResponseBody::class.java)
|
||||||
|
|
||||||
|
println("${responseBody.statusCode}")
|
||||||
|
|
||||||
when (responseBody.statusCode) {
|
when (responseBody.statusCode) {
|
||||||
200 -> {
|
200 -> {
|
||||||
it.status = RequestStatus.SUCCESS
|
it.status = RequestStatus.SUCCESS
|
||||||
@ -69,6 +72,16 @@ class KafkaResponseProcessor(
|
|||||||
requestRepository.save(it)
|
requestRepository.save(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
in 900..999 -> {
|
||||||
|
it.status = RequestStatus.ERROR
|
||||||
|
it.processedAt = Instant.ofEpochMilli(data.timestamp())
|
||||||
|
it.report = Report(
|
||||||
|
"Fehler bei der Datenübertragung, keine Verbindung zum bwHC-Backend möglich",
|
||||||
|
objectMapper.writeValueAsString(responseBody.statusBody)
|
||||||
|
)
|
||||||
|
requestRepository.save(it)
|
||||||
|
}
|
||||||
|
|
||||||
else -> {
|
else -> {
|
||||||
logger.error("Cannot process Kafka response: Unknown response code!")
|
logger.error("Cannot process Kafka response: Unknown response code!")
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
spring:
|
spring:
|
||||||
kafka:
|
kafka:
|
||||||
bootstrap-servers: ${app.kafka.servers}
|
bootstrap-servers: ${app.kafka.servers}
|
||||||
template:
|
|
||||||
default-topic: ${app.kafka.topic}
|
|
||||||
consumer:
|
consumer:
|
||||||
group-id: ${app.kafka.group-id}
|
group-id: ${app.kafka.group-id}
|
||||||
flyway:
|
flyway:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user