kafka发送消息流程

配置props.put(ProducerConfig.PARTITIONER_CLASS_CONFIG, RoundRobinPartitioner.class);

java 复制代码
public Map<String,Object> producerConfigs(){
    Map<String,Object> props = new HashMap<>();
    props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,bootstrapServers);
    props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,valueSerializer);
    props.put(ProducerConfig.PARTITIONER_CLASS_CONFIG, RoundRobinPartitioner.class);
    return props;
}

public ProducerFactory producerFactory(){
    return new DefaultKafkaProducerFactory<>(producerConfigs());
}

// 覆盖spring-kafka中的配置
@Bean
public KafkaTemplate<String,Object> kafkaTemplate(){
    return new KafkaTemplate<String,Object>(producerFactory());
}

自定义消息拦截器

java 复制代码
public class CustomerProducerInterceptor implements ProducerInterceptor<String,Object> {

    // 发送消息时,对消息拦截。
    @Override
    public ProducerRecord<String,Object> onSend(ProducerRecord producerRecord) {
        System.out.println("拦截消息" + producerRecord.toString());
        return null;
    }

    // 服务器是否收到了当前这条消息
    @Override
    public void onAcknowledgement(RecordMetadata recordMetadata, Exception e) {
        if(recordMetadata != null){
            System.out.println("服务器收到消息" + recordMetadata.offset());
        }else{
            // 没有收到消息发送失败
            System.out.println("消息发送失败!!!");
        }
    }

    @Override
    public void close() {

    }

    @Override
    public void configure(Map<String, ?> map) {

    }
}
相关推荐
喜悦151 小时前
RabbitMQ
分布式·rabbitmq
Lostgreen2 小时前
SQL on Hadoop
数据库·hadoop·笔记·分布式·sql·学习
一條狗4 小时前
随笔20241126 Kafka 消费者的自动提交与手动提交偏移量详解
分布式·kafka
运维&陈同学4 小时前
【kafka01】消息队列与微服务之Kafka详解
运维·分布式·后端·微服务·云原生·容器·架构·kafka
Mr.朱鹏4 小时前
设计模式之策略模式-工作实战总结与实现
java·spring·设计模式·kafka·maven·策略模式·springbbot
楚疏笃5 小时前
鸿蒙学习自由流转与分布式运行环境-跨端迁移(2)
分布式·学习·harmonyos
哼了个哈6 小时前
daos源码编译
分布式
Lostgreen6 小时前
分布式查询处理优化之数据分片
大数据·笔记·分布式
孙克旭_8 小时前
第五章 RabbitMQ高级
分布式·rabbitmq
Mr.Demo.10 小时前
[RabbitMQ] 保证消息可靠性的三大机制------消息确认,持久化,发送方确认
分布式·rabbitmq