Class ListenerUtils
java.lang.Object
org.springframework.kafka.listener.ListenerUtils
Listener utilities.
- Since:
- 2.0
-
Method Summary
Modifier and TypeMethodDescriptionstatic DeserializationException
byteArrayToDeserializationException
(org.springframework.core.log.LogAccessor logger, byte[] value) Convert a byte array containing a serializedDeserializationException
to theDeserializationException
.static org.apache.kafka.clients.consumer.OffsetAndMetadata
createOffsetAndMetadata
(MessageListenerContainer container, long offset) Create a newOffsetAndMetadata
using the given container and offset.static ListenerType
determineListenerType
(Object listener) Determine the type of the listener.static DeserializationException
getExceptionFromHeader
(org.apache.kafka.clients.consumer.ConsumerRecord<?, ?> record, String headerName, org.springframework.core.log.LogAccessor logger) Extract aDeserializationException
from the supplied header name, if present.static void
stoppableSleep
(MessageListenerContainer container, long interval) Sleep for the desired timeout, as long as the container continues to run.static void
unrecoverableBackOff
(org.springframework.util.backoff.BackOff backOff, ThreadLocal<org.springframework.util.backoff.BackOffExecution> executions, ThreadLocal<Long> lastIntervals, MessageListenerContainer container) Sleep according to theBackOff
; when theBackOffExecution
returnsBackOffExecution.STOP
sleep for the previous backOff.
-
Method Details
-
determineListenerType
Determine the type of the listener.- Parameters:
listener
- the listener.- Returns:
- the
ListenerType
.
-
getExceptionFromHeader
@Nullable public static DeserializationException getExceptionFromHeader(org.apache.kafka.clients.consumer.ConsumerRecord<?, ?> record, String headerName, org.springframework.core.log.LogAccessor logger) Extract aDeserializationException
from the supplied header name, if present.- Parameters:
record
- the consumer record.headerName
- the header name.logger
- the logger for logging errors.- Returns:
- the exception or null.
- Since:
- 2.3
-
byteArrayToDeserializationException
@Nullable public static DeserializationException byteArrayToDeserializationException(org.springframework.core.log.LogAccessor logger, byte[] value) Convert a byte array containing a serializedDeserializationException
to theDeserializationException
.- Parameters:
logger
- a log accessor to log errors.value
- the bytes.- Returns:
- the exception or null if deserialization fails.
- Since:
- 2.8.1
-
unrecoverableBackOff
public static void unrecoverableBackOff(org.springframework.util.backoff.BackOff backOff, ThreadLocal<org.springframework.util.backoff.BackOffExecution> executions, ThreadLocal<Long> lastIntervals, MessageListenerContainer container) throws InterruptedException Sleep according to theBackOff
; when theBackOffExecution
returnsBackOffExecution.STOP
sleep for the previous backOff.- Parameters:
backOff
- theBackOff
to create a newBackOffExecution
.executions
- a thread local containing theBackOffExecution
for this thread.lastIntervals
- a thread local containing the previousBackOff
interval for this thread.container
- the container or parent container.- Throws:
InterruptedException
- if the thread is interrupted.- Since:
- 2.7
-
stoppableSleep
public static void stoppableSleep(MessageListenerContainer container, long interval) throws InterruptedException Sleep for the desired timeout, as long as the container continues to run.- Parameters:
container
- the container.interval
- the timeout.- Throws:
InterruptedException
- if the thread is interrupted.- Since:
- 2.7
-
createOffsetAndMetadata
public static org.apache.kafka.clients.consumer.OffsetAndMetadata createOffsetAndMetadata(MessageListenerContainer container, long offset) Create a newOffsetAndMetadata
using the given container and offset.- Parameters:
container
- a container.offset
- an offset.- Returns:
- an offset and metadata.
- Since:
- 2.8.6
-