Class InMemoryQueue
java.lang.Object
cn.sliew.carp.framework.queue.kekio.AbstractLifecycle
cn.sliew.carp.framework.queue.kekio.AbstractQueue
cn.sliew.carp.framework.queue.kekio.memory.InMemoryQueue
- All Implemented Interfaces:
MonitorableQueue,Queue,org.springframework.beans.factory.DisposableBean,org.springframework.beans.factory.InitializingBean,org.springframework.context.Lifecycle,org.springframework.context.Phased,org.springframework.context.SmartLifecycle
public class InMemoryQueue
extends AbstractQueue
implements MonitorableQueue, org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.DisposableBean
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from interface cn.sliew.carp.framework.queue.kekio.metrics.MonitorableQueue
MonitorableQueue.QueueStateNested classes/interfaces inherited from interface cn.sliew.carp.framework.queue.kekio.Queue
Queue.DeadMessageCallback, Queue.QueueCallback -
Field Summary
Fields inherited from class cn.sliew.carp.framework.queue.kekio.AbstractQueue
ackTimeout, canPollMany, deadMessageHandlers, publisherFields inherited from interface cn.sliew.carp.framework.queue.kekio.Queue
MAX_RETRIESFields inherited from interface org.springframework.context.SmartLifecycle
DEFAULT_PHASE -
Constructor Summary
ConstructorsConstructorDescriptionInMemoryQueue(String name, QueueExecutor queueExecutor, Collection<MessageHandler> handlers, List<Queue.DeadMessageCallback> deadMessageHandlers, EventPublisher eventPublisher, io.micrometer.core.instrument.MeterRegistry meterRegistry, Boolean fillExecutorEachCycle, Duration requeueDelay, Duration requeueMaxJitter, Boolean canPollMany, TemporalAmount ackTimeout) -
Method Summary
Modifier and TypeMethodDescriptionvoidDenotes a queue implementation capable of processing multiple messages per poll.voidclear()Used for testing zombie executions.booleancontainsMessage(Predicate<Message> predicate) voiddestroy()The expired time after which un-acknowledged messages will be retried.A handler for messages that have failed to acknowledge delivery more than [Queue.ackTimeout] times.voidpoll(int maxMessages, Queue.QueueCallback callback) Polls the queue for ready messages, processing up-to [maxMessages].voidpoll(Queue.QueueCallback callback) Polls the queue for ready messages.voidpush(Message message, TemporalAmount delay) Push [message] for delivery after [delay].voidretry()Check for any un-acknowledged messages that are overdue and move them back onto the queue.Methods inherited from class cn.sliew.carp.framework.queue.kekio.AbstractQueue
doStart, doStop, getNameMethods inherited from class cn.sliew.carp.framework.queue.kekio.AbstractLifecycle
isRunning, start, stopMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.context.Lifecycle
isRunning, start, stopMethods inherited from interface cn.sliew.carp.framework.queue.kekio.metrics.MonitorableQueue
fireMethods inherited from interface org.springframework.context.SmartLifecycle
getPhase, isAutoStartup, stop
-
Constructor Details
-
InMemoryQueue
public InMemoryQueue(String name, QueueExecutor queueExecutor, Collection<MessageHandler> handlers, List<Queue.DeadMessageCallback> deadMessageHandlers, EventPublisher eventPublisher, io.micrometer.core.instrument.MeterRegistry meterRegistry, Boolean fillExecutorEachCycle, Duration requeueDelay, Duration requeueMaxJitter, Boolean canPollMany, TemporalAmount ackTimeout)
-
-
Method Details
-
afterPropertiesSet
- Specified by:
afterPropertiesSetin interfaceorg.springframework.beans.factory.InitializingBean- Throws:
Exception
-
destroy
- Specified by:
destroyin interfaceorg.springframework.beans.factory.DisposableBean- Throws:
Exception
-
poll
Description copied from interface:QueuePolls the queue for ready messages.Implementations may invoke [callback] any number of times. Some implementations may deliver a maximum of one message per call, others may deliver all ready messages.
If no messages exist on the queue or all messages have a remaining delay [callback] is not invoked.
Messages *must* be acknowledged by calling the function passed to [callback] or they will be retried after [ackTimeout]. Acknowledging via a nested callback allows the message to be processed asynchronously.
-
poll
Description copied from interface:QueuePolls the queue for ready messages, processing up-to [maxMessages]. -
push
Description copied from interface:QueuePush [message] for delivery after [delay]. -
retry
public void retry()Description copied from interface:QueueCheck for any un-acknowledged messages that are overdue and move them back onto the queue.This method is not intended to be called by clients directly but typically scheduled in some way.
-
clear
public void clear()Description copied from interface:QueueUsed for testing zombie executions. Wipes all messages from the queue. -
getAckTimeout
Description copied from interface:QueueThe expired time after which un-acknowledged messages will be retried.- Specified by:
getAckTimeoutin interfaceQueue
-
getDeadMessageHandlers
Description copied from interface:QueueA handler for messages that have failed to acknowledge delivery more than [Queue.ackTimeout] times.- Specified by:
getDeadMessageHandlersin interfaceQueue
-
canPollMany
Description copied from interface:QueueDenotes a queue implementation capable of processing multiple messages per poll.- Specified by:
canPollManyin interfaceQueue
-
getPublisher
- Specified by:
getPublisherin interfaceMonitorableQueue
-
readState
- Specified by:
readStatein interfaceMonitorableQueue
-
containsMessage
- Specified by:
containsMessagein interfaceMonitorableQueue
-