kafka生产者缓存队列异步发送API(两种)

//不带回调的异步发送
依赖:

  
 org.apache.kafka
 kafka-clients
 3.0.0
 
 kp = new KafkaProducer(properties);
        //TODO 发送消息
        for (int i = 0; i < 5; i++) {
            kp.send(new ProducerRecord("third","atguigu"+new Random().nextInt(5)));
        }
        //TODO 关闭资源
        kp.close();
    }
}




/**
    带回调的异步发送,发送完成后会返回发送结果
    回调函数会在 producer 收到 ack 时调用,为异步调用,该方法有两个参数,分别是元
    数据信息(RecordMetadata)和异常信息(Exception),如果 Exception 为 null,说明消息发
    送成功,如果 Exception 不为 null,说明消息发送失败
*/
只需要在上述基础上,将send方法更改为:

 kp.send(new ProducerRecord("third", "atguigu"), new Callback() {
                @Override
                //recordMetadata 存放上述ProducerRecord的元数据信息
                // e 异常信息
                public void onCompletion(RecordMetadata recordMetadata, Exception e) {
                    if (e == null){
                        System.out.println("主题  "+recordMetadata.topic()+"  分区  "+recordMetadata.partition());
                    }

                }
            }



同步发送: 
//只需将send更改为,然后抛出或抓取异常
kp.send(new ProducerRecord("third", "atguigu")).get();

你可能感兴趣的:(kafka,缓存,java)