Class DeadLetterPublishingRecovererFactory

    • Constructor Detail

      • DeadLetterPublishingRecovererFactory

        public DeadLetterPublishingRecovererFactory​(DestinationTopicResolver destinationTopicResolver)
    • Method Detail

      • setHeadersFunction

        public void setHeadersFunction​(java.util.function.BiFunction<org.apache.kafka.clients.consumer.ConsumerRecord<?,​?>,​java.lang.Exception,​org.apache.kafka.common.header.Headers> headersFunction)
        Set a function that creates additional headers for the output record, in addition to the standard retry headers added by this factory.
        Parameters:
        headersFunction - the function.
        Since:
        2.8.4
      • addNotRetryableException

        public final void addNotRetryableException​(java.lang.Class<? extends java.lang.Exception> exceptionType)
        Add exception type to the default list. By default, the following exceptions will not be retried: All others will be retried.
        Parameters:
        exceptionType - the exception type.
        Since:
        2.8
        See Also:
        removeNotRetryableException(Class)
      • removeNotRetryableException

        public boolean removeNotRetryableException​(java.lang.Class<? extends java.lang.Exception> exceptionType)
        Remove an exception type from the configured list. By default, the following exceptions will not be retried: All others will be retried.
        Parameters:
        exceptionType - the exception type.
        Returns:
        true if the removal was successful.
        See Also:
        addNotRetryableException(Class)
      • neverLogListenerException

        public void neverLogListenerException()
        Never logs the listener exception. The default is logging only after retries are exhausted.
        Since:
        2.7.13
      • alwaysLogListenerException

        public void alwaysLogListenerException()
        Logs the listener exception at each attempt. The default is logging only after retries are exhausted.
        Since:
        2.7.13
      • setDeadLetterPublishingRecovererCustomizer

        public void setDeadLetterPublishingRecovererCustomizer​(java.util.function.Consumer<DeadLetterPublishingRecoverer> customizer)
      • resolveTopicPartition

        protected org.apache.kafka.common.TopicPartition resolveTopicPartition​(org.apache.kafka.clients.consumer.ConsumerRecord<?,​?> cr,
                                                                               DestinationTopic nextDestination)
        Creates and returns the TopicPartition, where the original record should be forwarded. By default, it will use the partition same as original record's partition, in the next destination topic.

        DeadLetterPublishingRecoverer.checkPartition(org.apache.kafka.common.TopicPartition, org.apache.kafka.clients.consumer.Consumer<?, ?>) has logic to check whether that partition exists, and if it doesn't it sets -1, to allow the Producer itself to assign a partition to the record.

        Subclasses can inherit from this method to override the implementation, if necessary.

        Parameters:
        cr - The original ConsumerRecord, which is to be forwarded to DLT
        nextDestination - The next DestinationTopic, where the consumerRecord is to be forwarded
        Returns:
        An instance of TopicPartition, specifying the topic and partition, where the cr is to be sent