Example usage for org.springframework.kafka.core KafkaProducerException KafkaProducerException

List of usage examples for org.springframework.kafka.core KafkaProducerException KafkaProducerException

Introduction

In this page you can find the example usage for org.springframework.kafka.core KafkaProducerException KafkaProducerException.

Prototype

public KafkaProducerException(ProducerRecord<?, ?> failedProducerRecord, String message, Throwable cause) 

Source Link

Usage

From source file:org.springframework.kafka.core.KafkaTemplate.java

/**
 * Send the producer record.//w w  w.  j  a  va2s . co m
 * @param producerRecord the producer record.
 * @return a Future for the {@link RecordMetadata}.
 */
protected ListenableFuture<SendResult<K, V>> doSend(final ProducerRecord<K, V> producerRecord) {
    getTheProducer();
    if (this.logger.isTraceEnabled()) {
        this.logger.trace("Sending: " + producerRecord);
    }
    final SettableListenableFuture<SendResult<K, V>> future = new SettableListenableFuture<>();
    getTheProducer().send(producerRecord, new Callback() {

        @Override
        public void onCompletion(RecordMetadata metadata, Exception exception) {
            if (exception == null) {
                future.set(new SendResult<>(producerRecord, metadata));
                if (KafkaTemplate.this.producerListener != null
                        && KafkaTemplate.this.producerListener.isInterestedInSuccess()) {
                    KafkaTemplate.this.producerListener.onSuccess(producerRecord.topic(),
                            producerRecord.partition(), producerRecord.key(), producerRecord.value(), metadata);
                }
            } else {
                future.setException(new KafkaProducerException(producerRecord, "Failed to send", exception));
                if (KafkaTemplate.this.producerListener != null) {
                    KafkaTemplate.this.producerListener.onError(producerRecord.topic(),
                            producerRecord.partition(), producerRecord.key(), producerRecord.value(),
                            exception);
                }
            }
        }

    });
    if (this.autoFlush) {
        flush();
    }
    if (this.logger.isTraceEnabled()) {
        this.logger.trace("Sent: " + producerRecord);
    }
    return future;
}