kafka事物发送消息

kafka事物发送消息

package com.oldwang.transactional;

import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.common.serialization.StringSerializer;

import java.util.Properties;

/**
 * @author oldwang
 * kafka事物发送消息
 */
public class KafkaProducerTransactional {
    public static void main(String[] args) {
        Properties properties = new Properties();
        properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
        properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,StringSerializer.class.getName());
        properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"localhost:9092");
        properties.put(ProducerConfig.TRANSACTIONAL_ID_CONFIG,"transactionalId");

        KafkaProducer<String,String> producer = new KafkaProducer<>(properties);

        //初始化事物
        producer.initTransactions();
        //开启事物
        producer.beginTransaction();

        try {
            //业务逻辑处理
            ProducerRecord<String,String> record1 = new ProducerRecord<>("kafka-demo","msg1");
            producer.send(record1);
            ProducerRecord<String,String> record2 = new ProducerRecord<>("kafka-demo","msg2");
            producer.send(record2);
            ProducerRecord<String,String> record3 = new ProducerRecord<>("kafka-demo","msg3");
            producer.send(record3);

            //提交事物
            producer.commitTransaction();
        }catch (Exception e){
            e.printStackTrace();
            //终止事物
            producer.abortTransaction();
        }
        producer.close();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值