Senior
Kafka tranzaktsiyalari ishlatildimi (aniq bir marta semantika)?
sobes.tech AI
AIdan javob
Ha, Apache Kafka xabarlarni yozishda exactly-once semantikani ta'minlaydigan tranzaktsiyalarni qo'llab-quvvatlaydi. Bu, bir nechta yozuvlarni atomar operatsiyada guruhlaydigan tranzaktsion ishlab chiqaruvchi yordamida amalga oshiriladi. Kotlinda Kafka Producent API'sidan foydalanib, tranzaktsiyalarni sozlash mumkin, shunda xabarlar to'liq yoziladi yoki umuman yozilmaydi, nosozliklar paytida takrorlanishni oldini oladi.
Kotlinda tranzaktsion ishlab chiqaruvchini boshlash misoli:
val props = Properties().apply {
put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092")
put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer::class.java.name)
put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer::class.java.name)
put(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "true")
put(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "my-transactional-id")
}
val producer = KafkaProducer<String, String>(props)
producer.initTransactions()
try {
producer.beginTransaction()
producer.send(ProducerRecord("topic", "key", "value"))
// boshqa operatsiyalar
producer.commitTransaction()
} catch (e: Exception) {
producer.abortTransaction()
}