Kafka系列2:深入理解Kafka生产者( 六 )

  • 发送消息时 , 生产者可能会出现一些执行异常 , 序列化消息失败异常、缓冲区超出异常、超时异常 , 或者发送线程被中断异常 。

  • 同步发送

    在上一种发送方式中已经解释过同步发送和只发送的区别 , 以下是最简单的同步发送方式的代码样例 , 对比可以看到区别:

    ProducerRecord<String String> record = new ProducerRecord<>(\"Topic\" \"k\" \"v\");
    try {
    producer.send(record).get;
    catch (Exception e) {
    e.printStackTrace();

    可以看到 , 二者的区别就在于是否接收发送结果 。 同步发送会接收send()方法的返回值 , 即一个Future对象 , 通过调用Future对象的get()方法来等待Kafka响应 。 如果服务器返回错误 , 则get()方法就会抛出异常 。 如果没有发生错误 , 我们会得到一个RecordMetadata对象 , 可以用它来获取消息的偏移量 。

    异步发送消息

    推荐阅读