Class BaseUniversalJdbcQueue<T extends BaseUniversalQueueMessage<ID>,ID>
- java.lang.Object
-
- com.github.ddth.queue.impl.AbstractQueue<ID,DATA>
-
- com.github.ddth.queue.impl.AbstractEphemeralSupportQueue<ID,DATA>
-
- com.github.ddth.queue.impl.JdbcQueue<ID,byte[]>
-
- com.github.ddth.queue.impl.universal.BaseUniversalJdbcQueue<T,ID>
-
- Type Parameters:
T-
- All Implemented Interfaces:
IQueue<ID,byte[]>,AutoCloseable
- Direct Known Subclasses:
BaseLessLockingUniversalJdbcQueue,BaseLessLockingUniversalSingleStorageJdbcQueue,UniversalJdbcQueue,UniversalJdbcQueue,UniversalSingleStorageJdbcQueue,UniversalSingleStorageJdbcQueue
public abstract class BaseUniversalJdbcQueue<T extends BaseUniversalQueueMessage<ID>,ID> extends JdbcQueue<ID,byte[]>
Base class for universal JDBC queue implementations.FIFO: iftrue, queue message with lower id is ensured to be taken first; iffalse, order of taken queue messages depends on the DBMS (usually FIFO in most cases).- Since:
- 0.6.0
- Author:
- Thanh Nguyen
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.github.ddth.queue.impl.AbstractQueue
AbstractQueue.PutToQueueCase
-
-
Field Summary
-
Fields inherited from class com.github.ddth.queue.impl.JdbcQueue
DEFAULT_MAX_RETRIES, DEFAULT_TRANX_ISOLATION_LEVEL
-
Fields inherited from interface com.github.ddth.queue.IQueue
SIZE_NOT_SUPPORTED
-
-
Constructor Summary
Constructors Constructor Description BaseUniversalJdbcQueue()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected TcreateMessge(Map<String,Object> data)Create a message object from input data.protected <X> XensureMessageType(IQueueMessage<ID,byte[]> msg, Class<X> msgClass)booleangetFifo()Alias ofisFifo().booleanisFifo()Iftrue, queue message with lower id is ensured to be taken first.BaseUniversalJdbcQueue<T,ID>markFifo(boolean fifo)When set totrue, queue message with lower id is ensured to be taken first.protected List<T>selectMessages(Connection conn, String sql, Map<String,Object> params)Convenient method to query list of messages.BaseUniversalJdbcQueue<T,ID>setFifo(boolean fifo)Alias ofmarkFifo(boolean).Ttake()Take a message out of queue.-
Methods inherited from class com.github.ddth.queue.impl.JdbcQueue
_finishWithRetries, _getOrphanMessagesWithRetries, _queueWithRetries, _requeueSilentWithRetries, _requeueWithRetries, _takeWithRetries, buildJdbcHelper, destroy, doPutToQueue, doSize, ephemeralSize, ephemeralSize, executeWithRetries, executeWithRetries, executeWithRetries, finish, getDataSource, getJdbcHelper, getMaxRetries, getOrphanMessages, getOrphanMessagesFromEphemeralStorage, getTableName, getTableNameEphemeral, getTransactionIsolationLevel, init, peekFromQueueStorage, putToEphemeralStorage, putToQueueStorage, queueSize, queueSize, readFromEphemeralStorage, readFromEphemeralStorage, removeFromEphemeralStorage, removeFromQueueStorage, setDataSource, setJdbcHelper, setJdbcHelper, setMaxRetries, setTableName, setTableNameEphemeral, setTransactionIsolationLevel
-
Methods inherited from class com.github.ddth.queue.impl.AbstractEphemeralSupportQueue
getEphemeralDisabled, getEphemeralMaxSize, isEphemeralDisabled, setEphemeralDisabled, setEphemeralMaxSize
-
Methods inherited from class com.github.ddth.queue.impl.AbstractQueue
close, createMessage, createMessage, createMessage, deserialize, deserialize, getMessageFactory, getQueueName, getSerDeser, queue, requeue, requeueSilent, serialize, setMessageFactory, setQueueName, setSerDeser
-
-
-
-
Method Detail
-
markFifo
public BaseUniversalJdbcQueue<T,ID> markFifo(boolean fifo)
When set totrue, queue message with lower id is ensured to be taken first. When set tofalse, order of taken queue messages depends on the DBMS (usually FIFO in most cases).- Parameters:
fifo-- Returns:
-
isFifo
public boolean isFifo()
Iftrue, queue message with lower id is ensured to be taken first. Otherwise, order of taken queue messages depends on the DBMS (usually FIFO in most cases).- Returns:
-
setFifo
public BaseUniversalJdbcQueue<T,ID> setFifo(boolean fifo)
Alias ofmarkFifo(boolean).- Parameters:
fifo-- Returns:
-
getFifo
public boolean getFifo()
Alias ofisFifo().- Returns:
-
ensureMessageType
protected <X> X ensureMessageType(IQueueMessage<ID,byte[]> msg, Class<X> msgClass)
- Type Parameters:
X-- Parameters:
msg-msgClass-- Returns:
- the
msgcasted toX - Since:
- 1.0.0
-
createMessge
protected T createMessge(Map<String,Object> data)
Create a message object from input data.- Parameters:
data-- Returns:
- Since:
- 1.0.0
-
selectMessages
protected List<T> selectMessages(Connection conn, String sql, Map<String,Object> params)
Convenient method to query list of messages.- Parameters:
conn-sql-params-- Returns:
- Since:
- 1.0.0
-
take
public T take()
Take a message out of queue.Implementation flow:
- Read message from head of queue storage.
- Write message to ephemeral storage.
- Remove message from queue storage.
Note: ephemeral storage implementation is optional, depends on implementation.
-
-