Package com.github.ddth.queue.impl
Class AbstractQueue<ID,DATA>
- java.lang.Object
-
- com.github.ddth.queue.impl.AbstractQueue<ID,DATA>
-
- All Implemented Interfaces:
IQueue<ID,DATA>,AutoCloseable
- Direct Known Subclasses:
AbstractEphemeralSupportQueue,ActiveMqQueue,KafkaQueue,RabbitMqQueue
public abstract class AbstractQueue<ID,DATA> extends Object implements IQueue<ID,DATA>, AutoCloseable
Abstract queue implementation.- Since:
- 0.5.0
- Author:
- Thanh Nguyen
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classAbstractQueue.PutToQueueCase
-
Field Summary
-
Fields inherited from interface com.github.ddth.queue.IQueue
SIZE_NOT_SUPPORTED
-
-
Constructor Summary
Constructors Constructor Description AbstractQueue()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidclose()IQueueMessage<ID,DATA>createMessage()Create a new, empty queue message.IQueueMessage<ID,DATA>createMessage(DATA content)Create a new queue message with supplied content.IQueueMessage<ID,DATA>createMessage(ID id, DATA content)Create a new queue message with supplied id and content.protected IQueueMessage<ID,DATA>deserialize(byte[] data)Deserialize a queue message from bytes (was generated byserialize(IQueueMessage).protected <T extends IQueueMessage<ID,DATA>>
Tdeserialize(byte[] data, Class<T> clazz)Deserialize a queue message from bytes (was generated byserialize(IQueueMessage).voiddestroy()Destroy method.protected abstract booleandoPutToQueue(IQueueMessage<ID,DATA> msg, AbstractQueue.PutToQueueCase queueCase)Put a message to the queue storage.IQueueMessageFactory<ID,DATA>getMessageFactory()Factory to create queue messages.StringgetQueueName()Queue's name.com.github.ddth.commons.serialization.ISerDesergetSerDeser()Message serializer/deserializer.AbstractQueue<ID,DATA>init()Initializing method.booleanqueue(IQueueMessage<ID,DATA> _msg)Queue a message.booleanrequeue(IQueueMessage<ID,DATA> _msg)Re-queue a message.booleanrequeueSilent(IQueueMessage<ID,DATA> _msg)Silently re-queue a message.protected byte[]serialize(IQueueMessage<ID,DATA> queueMsg)Serialize a queue message to bytes.AbstractQueue<ID,DATA>setMessageFactory(IQueueMessageFactory<ID,DATA> messageFactory)Factory to create queue messages.AbstractQueue<ID,DATA>setQueueName(String queueName)Queue's name.AbstractQueue<ID,DATA>setSerDeser(com.github.ddth.commons.serialization.ISerDeser serDeser)Message serializer/deserializer.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.github.ddth.queue.IQueue
ephemeralSize, finish, getOrphanMessages, queueSize, take
-
-
-
-
Method Detail
-
getQueueName
public String getQueueName()
Queue's name.- Returns:
- Since:
- 0.6.0
-
setQueueName
public AbstractQueue<ID,DATA> setQueueName(String queueName)
Queue's name.- Parameters:
queueName-- Returns:
- Since:
- 0.6.0
-
getMessageFactory
public IQueueMessageFactory<ID,DATA> getMessageFactory()
Factory to create queue messages.- Returns:
- Since:
- 0.7.0
-
setMessageFactory
public AbstractQueue<ID,DATA> setMessageFactory(IQueueMessageFactory<ID,DATA> messageFactory)
Factory to create queue messages.- Parameters:
messageFactory-- Returns:
- Since:
- 0.7.0
-
getSerDeser
public com.github.ddth.commons.serialization.ISerDeser getSerDeser()
Message serializer/deserializer.- Returns:
- Since:
- 1.0.0
-
setSerDeser
public AbstractQueue<ID,DATA> setSerDeser(com.github.ddth.commons.serialization.ISerDeser serDeser)
Message serializer/deserializer.- Parameters:
serDeser-- Returns:
- Since:
- 1.0.0
-
init
public AbstractQueue<ID,DATA> init() throws Exception
Initializing method.- Returns:
- Throws:
Exception
-
destroy
public void destroy()
Destroy method.
-
close
public void close()
- Specified by:
closein interfaceAutoCloseable
-
createMessage
public IQueueMessage<ID,DATA> createMessage()
Create a new, empty queue message.- Specified by:
createMessagein interfaceIQueue<ID,DATA>- Returns:
- Since:
- 0.6.0
-
createMessage
public IQueueMessage<ID,DATA> createMessage(DATA content)
Create a new queue message with supplied content.- Specified by:
createMessagein interfaceIQueue<ID,DATA>- Returns:
- Since:
- 0.6.0
-
createMessage
public IQueueMessage<ID,DATA> createMessage(ID id, DATA content)
Create a new queue message with supplied id and content.- Specified by:
createMessagein interfaceIQueue<ID,DATA>- Returns:
- Since:
- 0.6.0
-
serialize
protected byte[] serialize(IQueueMessage<ID,DATA> queueMsg)
Serialize a queue message to bytes.- Parameters:
queueMsg-- Returns:
- Since:
- 0.7.0
-
deserialize
protected IQueueMessage<ID,DATA> deserialize(byte[] data)
Deserialize a queue message from bytes (was generated byserialize(IQueueMessage).- Parameters:
data-- Returns:
- Since:
- 0.7.0
-
deserialize
protected <T extends IQueueMessage<ID,DATA>> T deserialize(byte[] data, Class<T> clazz)
Deserialize a queue message from bytes (was generated byserialize(IQueueMessage).- Parameters:
data-clazz-- Returns:
- Since:
- 0.7.0
-
doPutToQueue
protected abstract boolean doPutToQueue(IQueueMessage<ID,DATA> msg, AbstractQueue.PutToQueueCase queueCase) throws QueueException.QueueIsFull
Put a message to the queue storage.Sub-class implements this method.
- Parameters:
msg-queueCase-- Returns:
- Throws:
QueueException.QueueIsFull- Since:
- 1.0.0
-
queue
public boolean queue(IQueueMessage<ID,DATA> _msg)
Queue a message.Implementation flow:
- Put message to tail of queue storage.
-
requeue
public boolean requeue(IQueueMessage<ID,DATA> _msg)
Re-queue a message.Implementation flow:
- Put message to the queue storage (head or tail position depends on the queue implementation); and increase message's re-queue count & update message's queue timestamp.
- Remove message from ephemeral storage.
Note: ephemeral storage implementation is optional, depends on implementation.
-
requeueSilent
public boolean requeueSilent(IQueueMessage<ID,DATA> _msg)
Silently re-queue a message.Implementation flow:
- Put message to the queue storage (head or tail position depends on the queue implementation); do NOT increase message's re-queue count and do NOT update message's queue timestamp.
- Remove message from ephemeral storage.
Note: ephemeral storage implementation is optional, depends on implementation.
- Specified by:
requeueSilentin interfaceIQueue<ID,DATA>- Returns:
-
-