public class RedisQueueCircuitBreakerStorage extends Object implements QueueCircuitBreakerStorage
QueueCircuitBreakerStorage interface.| Modifier and Type | Field and Description |
|---|---|
static String |
FIELD_CIRCUIT |
static String |
FIELD_FAILRATIO |
static String |
FIELD_STATE |
static String |
STORAGE_ALL_CIRCUITS |
static String |
STORAGE_HALFOPEN_CIRCUITS |
static String |
STORAGE_INFOS_SUFFIX |
static String |
STORAGE_OPEN_CIRCUITS |
static String |
STORAGE_PREFIX |
static String |
STORAGE_QUEUES_SUFFIX |
static String |
STORAGE_QUEUES_TO_UNLOCK |
| Constructor and Description |
|---|
RedisQueueCircuitBreakerStorage(io.vertx.redis.RedisClient redisClient) |
| Modifier and Type | Method and Description |
|---|---|
io.vertx.core.Future<Void> |
closeAllCircuits()
Closes all non-closed circuits.
|
io.vertx.core.Future<Void> |
closeAndRemoveCircuit(PatternAndCircuitHash patternAndCircuitHash)
Closes the circuit and removes all circuit information from storage.
|
io.vertx.core.Future<Void> |
closeCircuit(PatternAndCircuitHash patternAndCircuitHash)
Closes the circuit.
|
io.vertx.core.Future<io.vertx.core.json.JsonObject> |
getAllCircuits()
Get the information (status, failRatio and circuit) of all circuits.
|
io.vertx.core.Future<io.vertx.core.json.JsonObject> |
getQueueCircuitInformation(String circuitHash)
Get the information (status, failRatio and circuit) of the circuit represented by the provided circuitHash.
|
io.vertx.core.Future<QueueCircuitState> |
getQueueCircuitState(PatternAndCircuitHash patternAndCircuitHash)
Get the actual
QueueCircuitState of the provided patternAndCircuitHash object. |
io.vertx.core.Future<QueueCircuitState> |
getQueueCircuitState(String circuitHash)
Get the actual
QueueCircuitState of the provided circuitHash. |
io.vertx.core.Future<Void> |
lockQueue(String queueName,
PatternAndCircuitHash patternAndCircuitHash)
Mark the queueName as a locked queue of the circuit representing the provided patternAndCircuitHash.
|
io.vertx.core.Future<String> |
popQueueToUnlock()
Get the next queue to unlock.
|
io.vertx.core.Future<Void> |
reOpenCircuit(PatternAndCircuitHash patternAndCircuitHash)
Re-Opens the (half-open) circuit again.
|
io.vertx.core.Future<Long> |
setOpenCircuitsToHalfOpen()
Changes the status of all circuits having a status equals
QueueCircuitState.OPEN
to QueueCircuitState.HALF_OPEN. |
io.vertx.core.Future<List<String>> |
unlockSampleQueues()
Get a list of sample queues of all circuits having a status equals
QueueCircuitState.HALF_OPEN. |
io.vertx.core.Future<UpdateStatisticsResult> |
updateStatistics(PatternAndCircuitHash patternAndCircuitHash,
String uniqueRequestID,
long timestamp,
int errorThresholdPercentage,
long entriesMaxAgeMS,
long minQueueSampleCount,
long maxQueueSampleCount,
QueueResponseType queueResponseType)
Updates the statistics of the corresponding circuit based on the provided patternAndCircuitHash.
|
public static final String STORAGE_PREFIX
public static final String STORAGE_INFOS_SUFFIX
public static final String STORAGE_QUEUES_SUFFIX
public static final String STORAGE_ALL_CIRCUITS
public static final String STORAGE_HALFOPEN_CIRCUITS
public static final String STORAGE_OPEN_CIRCUITS
public static final String STORAGE_QUEUES_TO_UNLOCK
public static final String FIELD_STATE
public static final String FIELD_FAILRATIO
public static final String FIELD_CIRCUIT
public RedisQueueCircuitBreakerStorage(io.vertx.redis.RedisClient redisClient)
public io.vertx.core.Future<QueueCircuitState> getQueueCircuitState(PatternAndCircuitHash patternAndCircuitHash)
QueueCircuitBreakerStorageQueueCircuitState of the provided patternAndCircuitHash object. When no circuit could be
found in the storage, QueueCircuitState.CLOSED is returned.getQueueCircuitState in interface QueueCircuitBreakerStoragepatternAndCircuitHash - circuit informationQueueCircuitState or QueueCircuitState.CLOSED when no circuit was foundpublic io.vertx.core.Future<QueueCircuitState> getQueueCircuitState(String circuitHash)
QueueCircuitBreakerStorageQueueCircuitState of the provided circuitHash. When no circuit could be found in the
storage, QueueCircuitState.CLOSED is returned.getQueueCircuitState in interface QueueCircuitBreakerStoragecircuitHash - the hash representing the circuitQueueCircuitState or QueueCircuitState.CLOSED when no circuit was foundpublic io.vertx.core.Future<io.vertx.core.json.JsonObject> getQueueCircuitInformation(String circuitHash)
QueueCircuitBreakerStoragegetQueueCircuitInformation in interface QueueCircuitBreakerStoragecircuitHash - the hash representing the circuit to get the informations fromJsonObject containing the information of the circuitpublic io.vertx.core.Future<io.vertx.core.json.JsonObject> getAllCircuits()
QueueCircuitBreakerStoragegetAllCircuits in interface QueueCircuitBreakerStorageJsonObject containing the information of all circuitspublic io.vertx.core.Future<UpdateStatisticsResult> updateStatistics(PatternAndCircuitHash patternAndCircuitHash, String uniqueRequestID, long timestamp, int errorThresholdPercentage, long entriesMaxAgeMS, long minQueueSampleCount, long maxQueueSampleCount, QueueResponseType queueResponseType)
QueueCircuitBreakerStorageUpdates the statistics of the corresponding circuit based on the provided patternAndCircuitHash.
Updating the statistics includes the following steps:
QueueResponseType.FAILUREQueueResponseType.SUCCESSupdateStatistics in interface QueueCircuitBreakerStoragepatternAndCircuitHash - the information of the circuituniqueRequestID - the unique identifier of the queued requesttimestamp - the current timestamperrorThresholdPercentage - the threshold to change status to 'OPEN' when reachedentriesMaxAgeMS - the maximum age of fail/success records to respect to calculate the failRatiominQueueSampleCount - the minimum amount of records (unique uniqueRequestIDs) to reach before status can be changedmaxQueueSampleCount - the maximum amount of fail/success records to keepqueueResponseType - the QueueResponseType representing the execution result of the queuedRequestUpdateStatisticsResult object representing the result of the statistics updatepublic io.vertx.core.Future<Void> lockQueue(String queueName, PatternAndCircuitHash patternAndCircuitHash)
QueueCircuitBreakerStoragelockQueue in interface QueueCircuitBreakerStoragequeueName - the name of the queuepatternAndCircuitHash - the information of the circuitpublic io.vertx.core.Future<String> popQueueToUnlock()
QueueCircuitBreakerStoragepopQueueToUnlock in interface QueueCircuitBreakerStoragenull when no queue was foundpublic io.vertx.core.Future<Void> closeCircuit(PatternAndCircuitHash patternAndCircuitHash)
QueueCircuitBreakerStorageCloses the circuit.
Closing the circuit includes the following steps:
closeCircuit in interface QueueCircuitBreakerStoragepatternAndCircuitHash - the information of the circuitpublic io.vertx.core.Future<Void> closeAndRemoveCircuit(PatternAndCircuitHash patternAndCircuitHash)
QueueCircuitBreakerStoragecloseAndRemoveCircuit in interface QueueCircuitBreakerStoragepatternAndCircuitHash - the information of the circuitpublic io.vertx.core.Future<Void> closeAllCircuits()
QueueCircuitBreakerStorageCloses all non-closed circuits.
Closing all non-closed circuits includes the following steps:
closeAllCircuits in interface QueueCircuitBreakerStoragepublic io.vertx.core.Future<Void> reOpenCircuit(PatternAndCircuitHash patternAndCircuitHash)
QueueCircuitBreakerStoragereOpenCircuit in interface QueueCircuitBreakerStoragepatternAndCircuitHash - the information of the circuitpublic io.vertx.core.Future<Long> setOpenCircuitsToHalfOpen()
QueueCircuitBreakerStorageQueueCircuitState.OPEN
to QueueCircuitState.HALF_OPEN.setOpenCircuitsToHalfOpen in interface QueueCircuitBreakerStoragepublic io.vertx.core.Future<List<String>> unlockSampleQueues()
QueueCircuitBreakerStorageQueueCircuitState.HALF_OPEN. The sample
queues are always the queues which have not been unlocked the longest. Each sample queue of each circuit is then
updated to be the 'most recently' unlocked queue.unlockSampleQueues in interface QueueCircuitBreakerStorageCopyright © 2016–2019. All rights reserved.