From 0731bd58889df127ef87aba2590d505d79e6646f Mon Sep 17 00:00:00 2001 From: mjkwiatkowski Date: Mon, 15 Jun 2026 23:48:44 +0200 Subject: feat: migrated the past project to the sunfish repo --- .../main/kotlin/org/opendc/common/utils/Kafka.kt | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 opendc-common/src/main/kotlin/org/opendc/common/utils/Kafka.kt (limited to 'opendc-common/src/main/kotlin/org/opendc/common/utils/Kafka.kt') diff --git a/opendc-common/src/main/kotlin/org/opendc/common/utils/Kafka.kt b/opendc-common/src/main/kotlin/org/opendc/common/utils/Kafka.kt new file mode 100644 index 00000000..81eb6752 --- /dev/null +++ b/opendc-common/src/main/kotlin/org/opendc/common/utils/Kafka.kt @@ -0,0 +1,38 @@ +package org.opendc.common.utils + +import com.fasterxml.jackson.dataformat.toml.TomlMapper +import org.apache.kafka.clients.producer.KafkaProducer +import org.apache.kafka.clients.producer.ProducerRecord +import org.opendc.common.ProtobufMetrics +import java.util.* +/** + * Represents the Kafka interface. + * @constructor `topic` the Kafka topic + * @author Mateusz Kwiatkowski + * @see + * https://kafka.apache.org/23/javadoc/org/apache/kafka/clients/producer/KafkaProducer.html + * @see + * https://kafka.apache.org/23/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html + */ + +@Suppress("DEPRECATION") +public class Kafka(private val topic: String) { + private var properties : Properties + + init { + check(!topic.contains("-")) + properties = TomlMapper().readerFor(Properties().javaClass) + .readValue(Kafka::class.java.getResource("/producer.toml")) + } + + public fun getSend() : (ProtobufMetrics.ProtoExport) -> Unit { + val producer = KafkaProducer(properties) + return fun (value : ProtobufMetrics.ProtoExport) { + try { + producer.send(ProducerRecord(this.topic, value)) + } catch (e: Exception) { + println("${e.message}") + } + } + } +} \ No newline at end of file -- cgit v1.2.3