Package org.apache.storm.kafka.spout
Interface KafkaSpoutRetryService
- All Superinterfaces:
Serializable
- All Known Implementing Classes:
KafkaSpoutRetryExponentialBackoff
Represents the logic that manages the retrial of failed tuples.
-
Method Summary
Modifier and TypeMethodDescriptionGets the earliest retriable offsets.getMessageId
(org.apache.kafka.common.TopicPartition topicPartition, long offset) Gets theKafkaSpoutMessageId
for the record on the given topic partition and offset.boolean
isReady
(KafkaSpoutMessageId msgId) Checks if a specific failedKafkaSpoutMessageId
is ready to be retried, i.e is scheduled and has retry time that is less than current time.boolean
isScheduled
(KafkaSpoutMessageId msgId) Checks if a specific failedKafkaSpoutMessageId
is scheduled to be retried.int
Get the number of messages ready for retry.boolean
remove
(KafkaSpoutMessageId msgId) Removes a message from the list of messages scheduled for retrial.boolean
retainAll
(Collection<org.apache.kafka.common.TopicPartition> topicPartitions) Retains all the messages whoseTopicPartition
belongs to the specifiedCollection<TopicPartition>
.boolean
schedule
(KafkaSpoutMessageId msgId) Schedules thisKafkaSpoutMessageId
if not yet scheduled, or updates retry time if it has already been scheduled.
-
Method Details
-
schedule
Schedules thisKafkaSpoutMessageId
if not yet scheduled, or updates retry time if it has already been scheduled. It may also indicate that the message should not be retried, in which case the message will not be scheduled.- Parameters:
msgId
- message to schedule for retrial- Returns:
- true if the message will be retried, false otherwise
-
remove
Removes a message from the list of messages scheduled for retrial.- Parameters:
msgId
- message to remove from retrial- Returns:
- true if the message was scheduled for retrial, false otherwise
-
retainAll
Retains all the messages whoseTopicPartition
belongs to the specifiedCollection<TopicPartition>
. All messages that come from aTopicPartition
NOT existing in the collection will be removed. This method is useful to cleanup state following partition rebalance.- Parameters:
topicPartitions
- Collection ofTopicPartition
for which to keep messages- Returns:
- true if at least one message was removed, false otherwise
-
earliestRetriableOffsets
Gets the earliest retriable offsets.- Returns:
- The earliest retriable offset for each TopicPartition that has offsets ready to be retried, i.e. for which a tuple has failed and has retry time less than current time.
-
isReady
Checks if a specific failedKafkaSpoutMessageId
is ready to be retried, i.e is scheduled and has retry time that is less than current time.- Parameters:
msgId
- message to check for readiness- Returns:
- true if message is ready to be retried, false otherwise
-
isScheduled
Checks if a specific failedKafkaSpoutMessageId
is scheduled to be retried. The message may or may not be ready to be retried yet.- Parameters:
msgId
- message to check for scheduling status- Returns:
- true if the message is scheduled to be retried, regardless of being or not ready to be retried. Returns false is this message is not scheduled for retrial
-
readyMessageCount
int readyMessageCount()Get the number of messages ready for retry.- Returns:
- The number of messages that are ready for retry
-
getMessageId
KafkaSpoutMessageId getMessageId(org.apache.kafka.common.TopicPartition topicPartition, long offset) Gets theKafkaSpoutMessageId
for the record on the given topic partition and offset.- Parameters:
topicPartition
- The topic partition of the recordoffset
- The offset of the record- Returns:
- The id the record was scheduled for retry with,
or a new
KafkaSpoutMessageId
if the record was not scheduled for retry.
-