refactor(infra-monitoring)

refactor(infra-gateway)
This commit is contained in:
stefan
2025-08-11 14:32:01 +02:00
parent d87a5a4a93
commit 582678e226
16 changed files with 282 additions and 115 deletions
@@ -1,18 +1,22 @@
package at.mocode.infrastructure.messaging.client
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.kafka.core.ProducerFactory
import org.springframework.kafka.core.DefaultKafkaProducerFactory
import org.springframework.kafka.core.reactive.ReactiveKafkaProducerTemplate
import reactor.kafka.sender.SenderOptions
@Configuration
/**
* Reactive Kafka configuration utilities for creating a ReactiveKafkaProducerTemplate.
*/
class ReactiveKafkaConfig {
@Bean
fun reactiveKafkaProducerTemplate(producerFactory: ProducerFactory<String, Any>): ReactiveKafkaProducerTemplate<String, Any> {
// Nutzt die ProducerFactory aus dem messaging-config-Modul
val senderOptions = SenderOptions.create<String, Any>(producerFactory.configurationProperties)
/**
* Create a ReactiveKafkaProducerTemplate using the configuration from the given ProducerFactory.
*/
fun reactiveKafkaProducerTemplate(
producerFactory: DefaultKafkaProducerFactory<String, Any>
): ReactiveKafkaProducerTemplate<String, Any> {
val props: Map<String, Any> = producerFactory.configurationProperties
val senderOptions: SenderOptions<String, Any> = SenderOptions.create(props)
return ReactiveKafkaProducerTemplate(senderOptions)
}
}
@@ -36,7 +36,7 @@ class KafkaIntegrationTest {
val kafkaConfig = KafkaConfig().apply {
bootstrapServers = kafkaContainer.bootstrapServers
}
producerFactory = kafkaConfig.producerFactory() as DefaultKafkaProducerFactory<String, Any>
producerFactory = kafkaConfig.producerFactory()
val reactiveKafkaConfig = ReactiveKafkaConfig()
val reactiveTemplate = reactiveKafkaConfig.reactiveKafkaProducerTemplate(producerFactory)
@@ -60,9 +60,18 @@ class KafkaIntegrationTest {
ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG to StringDeserializer::class.java,
ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG to JsonDeserializer::class.java,
ConsumerConfig.AUTO_OFFSET_RESET_CONFIG to "earliest",
JsonDeserializer.TRUSTED_PACKAGES to "*"
JsonDeserializer.TRUSTED_PACKAGES to "*",
JsonDeserializer.USE_TYPE_INFO_HEADERS to false,
JsonDeserializer.VALUE_DEFAULT_TYPE to TestEvent::class.java.name
)
val receiverOptions = ReceiverOptions.create<String, TestEvent>(consumerProps).subscription(listOf(testTopic))
val jsonValueDeserializer = JsonDeserializer(TestEvent::class.java).apply {
addTrustedPackages("*")
}
val receiverOptions = ReceiverOptions.create<String, TestEvent>(consumerProps)
.withKeyDeserializer(StringDeserializer())
.withValueDeserializer(jsonValueDeserializer)
.subscription(listOf(testTopic))
// Der Mono, der das nächste empfangene Ereignis darstellt
val receivedEvent = KafkaReceiver.create(receiverOptions)