Class AbstractCommand<TResult>
- Namespace
- Steeltoe.CircuitBreaker.Hystrix
- Assembly
- Steeltoe.CircuitBreaker.HystrixBase.dll
public abstract class AbstractCommand<TResult> : AbstractCommandBase, IHystrixInvokableInfo, IHystrixInvokable
Type Parameters
TResult
- Inheritance
-
AbstractCommand<TResult>
- Implements
-
- Derived
-
- Inherited Members
-
Constructors
AbstractCommand(IHystrixCommandGroupKey, IHystrixCommandKey, IHystrixThreadPoolKey, IHystrixCircuitBreaker, IHystrixThreadPool, IHystrixCommandOptions, IHystrixThreadPoolOptions, HystrixCommandMetrics, SemaphoreSlim, SemaphoreSlim, HystrixOptionsStrategy, HystrixCommandExecutionHook, ILogger)
protected AbstractCommand(IHystrixCommandGroupKey group, IHystrixCommandKey key, IHystrixThreadPoolKey threadPoolKey, IHystrixCircuitBreaker circuitBreaker, IHystrixThreadPool threadPool, IHystrixCommandOptions commandOptionsDefaults, IHystrixThreadPoolOptions threadPoolOptionsDefaults, HystrixCommandMetrics metrics, SemaphoreSlim fallbackSemaphore, SemaphoreSlim executionSemaphore, HystrixOptionsStrategy optionsStrategy, HystrixCommandExecutionHook executionHook, ILogger logger = null)
Parameters
group IHystrixCommandGroupKey
key IHystrixCommandKey
threadPoolKey IHystrixThreadPoolKey
circuitBreaker IHystrixCircuitBreaker
threadPool IHystrixThreadPool
commandOptionsDefaults IHystrixCommandOptions
threadPoolOptionsDefaults IHystrixThreadPoolOptions
metrics HystrixCommandMetrics
fallbackSemaphore SemaphoreSlim
executionSemaphore SemaphoreSlim
optionsStrategy HystrixOptionsStrategy
executionHook HystrixCommandExecutionHook
logger ILogger
Fields
_circuitBreaker
protected readonly IHystrixCircuitBreaker _circuitBreaker
Field Value
- IHystrixCircuitBreaker
_commandStartTimestamp
protected long _commandStartTimestamp
Field Value
- long
_concurrencyStrategy
protected readonly HystrixConcurrencyStrategy _concurrencyStrategy
Field Value
- HystrixConcurrencyStrategy
_currentRequestLog
protected readonly HystrixRequestLog _currentRequestLog
Field Value
- HystrixRequestLog
_eventNotifier
protected readonly HystrixEventNotifier _eventNotifier
Field Value
- HystrixEventNotifier
_execThreadTask
protected Task _execThreadTask
Field Value
- Task
_executionHook
protected readonly HystrixCommandExecutionHook _executionHook
Field Value
- HystrixCommandExecutionHook
_executionResult
protected volatile ExecutionResult _executionResult
Field Value
- ExecutionResult
_executionResultAtTimeOfCancellation
protected volatile ExecutionResult _executionResultAtTimeOfCancellation
Field Value
- ExecutionResult
_executionSemaphoreOverride
protected readonly SemaphoreSlim _executionSemaphoreOverride
Field Value
- SemaphoreSlim
_fallbackSemaphoreOverride
protected readonly SemaphoreSlim _fallbackSemaphoreOverride
Field Value
- SemaphoreSlim
_isFallbackUserDefined
protected bool _isFallbackUserDefined
Field Value
- bool
_isResponseFromCache
protected volatile bool _isResponseFromCache
Field Value
- bool
_metrics
protected readonly HystrixCommandMetrics _metrics
Field Value
- HystrixCommandMetrics
_requestCache
protected readonly HystrixRequestCache _requestCache
Field Value
- HystrixRequestCache
_threadPool
protected readonly IHystrixThreadPool _threadPool
Field Value
- IHystrixThreadPool
_threadStartTimestamp
protected long _threadStartTimestamp
Field Value
- long
_timeoutTcs
protected CancellationTokenSource _timeoutTcs
Field Value
- CancellationTokenSource
_token
protected CancellationToken _token
Field Value
- CancellationToken
_usersToken
protected CancellationToken _usersToken
Field Value
- CancellationToken
commandGroup
protected readonly IHystrixCommandGroupKey commandGroup
Field Value
- IHystrixCommandGroupKey
commandKey
protected readonly IHystrixCommandKey commandKey
Field Value
- IHystrixCommandKey
commandState
protected readonly AbstractCommand<TResult>.AtomicCommandState commandState
Field Value
- AbstractCommand<TResult>.AtomicCommandState
isCommandTimedOut
protected readonly AbstractCommand<TResult>.AtomicTimedOutStatus isCommandTimedOut
Field Value
- AbstractCommand<TResult>.AtomicTimedOutStatus
options
protected readonly IHystrixCommandOptions options
Field Value
- IHystrixCommandOptions
tcs
protected AbstractCommand<TResult>.HystrixCompletionSource tcs
Field Value
- AbstractCommand<TResult>.HystrixCompletionSource
threadPoolKey
protected readonly IHystrixThreadPoolKey threadPoolKey
Field Value
- IHystrixThreadPoolKey
threadState
protected readonly AbstractCommand<TResult>.AtomicThreadState threadState
Field Value
- AbstractCommand<TResult>.AtomicThreadState
Properties
CacheKey
protected virtual string CacheKey { get; }
Property Value
- string
CommandGroup
public IHystrixCommandGroupKey CommandGroup { get; }
Property Value
- IHystrixCommandGroupKey
CommandIsScalar
protected virtual bool CommandIsScalar { get; }
Property Value
- bool
CommandKey
public IHystrixCommandKey CommandKey { get; }
Property Value
- IHystrixCommandKey
CommandOptions
public IHystrixCommandOptions CommandOptions { get; }
Property Value
- IHystrixCommandOptions
CommandResult
protected virtual ExecutionResult CommandResult { get; }
Property Value
- ExecutionResult
CommandRunStartTimeInNanos
public long CommandRunStartTimeInNanos { get; }
Property Value
- long
EventCounts
public ExecutionResult.EventCounts EventCounts { get; }
Property Value
- ExecutionResult.EventCounts
ExecutionEvents
public List<HystrixEventType> ExecutionEvents { get; }
Property Value
- List<HystrixEventType>
ExecutionException
public Exception ExecutionException { get; }
Property Value
- Exception
ExecutionTimeInMilliseconds
public int ExecutionTimeInMilliseconds { get; }
Property Value
- int
FailedExecutionException
public Exception FailedExecutionException { get; }
Property Value
- Exception
IsCircuitBreakerOpen
public bool IsCircuitBreakerOpen { get; }
Property Value
- bool
IsExecutedInThread
public bool IsExecutedInThread { get; }
Property Value
- bool
IsExecutionComplete
public bool IsExecutionComplete { get; }
Property Value
- bool
IsFailedExecution
public bool IsFailedExecution { get; }
Property Value
- bool
IsFallbackUserDefined
public virtual bool IsFallbackUserDefined { get; set; }
Property Value
- bool
IsRequestCachingEnabled
protected virtual bool IsRequestCachingEnabled { get; }
Property Value
- bool
IsResponseFromCache
public bool IsResponseFromCache { get; }
Property Value
- bool
IsResponseFromFallback
public bool IsResponseFromFallback { get; }
Property Value
- bool
IsResponseRejected
public bool IsResponseRejected { get; }
Property Value
- bool
IsResponseSemaphoreRejected
public bool IsResponseSemaphoreRejected { get; }
Property Value
- bool
IsResponseShortCircuited
public bool IsResponseShortCircuited { get; }
Property Value
- bool
IsResponseThreadPoolRejected
public bool IsResponseThreadPoolRejected { get; }
Property Value
- bool
IsResponseTimedOut
public bool IsResponseTimedOut { get; }
Property Value
- bool
IsSuccessfulExecution
public bool IsSuccessfulExecution { get; }
Property Value
- bool
LogMessagePrefix
protected virtual string LogMessagePrefix { get; }
Property Value
- string
Metrics
public HystrixCommandMetrics Metrics { get; }
Property Value
- HystrixCommandMetrics
NumberCollapsed
public int NumberCollapsed { get; }
Property Value
- int
NumberEmissions
public int NumberEmissions { get; }
Property Value
- int
NumberFallbackEmissions
public int NumberFallbackEmissions { get; }
Property Value
- int
OriginatingCollapserKey
public IHystrixCollapserKey OriginatingCollapserKey { get; }
Property Value
- IHystrixCollapserKey
PublicCacheKey
public string PublicCacheKey { get; }
Property Value
- string
ShouldOutputOnNextEvents
protected virtual bool ShouldOutputOnNextEvents { get; }
Property Value
- bool
ThreadPoolKey
public IHystrixThreadPoolKey ThreadPoolKey { get; }
Property Value
- IHystrixThreadPoolKey
Methods
ApplyHystrixSemantics()
protected void ApplyHystrixSemantics()
DecomposeException(Exception)
protected Exception DecomposeException(Exception e)
Parameters
e Exception
Returns
- Exception
DoFallback()
protected abstract TResult DoFallback()
Returns
- TResult
DoRun()
protected abstract TResult DoRun()
Returns
- TResult
GetExecutionSemaphore()
protected SemaphoreSlim GetExecutionSemaphore()
Returns
- SemaphoreSlim
GetFallbackSemaphore()
protected SemaphoreSlim GetFallbackSemaphore()
Returns
- SemaphoreSlim
HandleCleanUpAfterResponseFromCache(bool)
protected virtual void HandleCleanUpAfterResponseFromCache(bool commandExecutionStarted)
Parameters
commandExecutionStarted bool
HandleCommandEnd(bool)
protected virtual void HandleCommandEnd(bool commandExecutionStarted)
Parameters
commandExecutionStarted bool
HandleThreadEnd()
protected virtual void HandleThreadEnd()
InitCircuitBreaker(bool, IHystrixCircuitBreaker, IHystrixCommandGroupKey, IHystrixCommandKey, IHystrixCommandOptions, HystrixCommandMetrics)
protected static IHystrixCircuitBreaker InitCircuitBreaker(bool enabled, IHystrixCircuitBreaker fromConstructor, IHystrixCommandGroupKey groupKey, IHystrixCommandKey commandKey, IHystrixCommandOptions properties, HystrixCommandMetrics metrics)
Parameters
enabled bool
fromConstructor IHystrixCircuitBreaker
groupKey IHystrixCommandGroupKey
commandKey IHystrixCommandKey
properties IHystrixCommandOptions
metrics HystrixCommandMetrics
Returns
- IHystrixCircuitBreaker
InitCommandKey(IHystrixCommandKey, Type)
protected static IHystrixCommandKey InitCommandKey(IHystrixCommandKey fromConstructor, Type clazz)
Parameters
fromConstructor IHystrixCommandKey
clazz Type
Returns
- IHystrixCommandKey
InitCommandOptions(IHystrixCommandKey, HystrixOptionsStrategy, IHystrixCommandOptions)
protected static IHystrixCommandOptions InitCommandOptions(IHystrixCommandKey commandKey, HystrixOptionsStrategy optionsStrategy, IHystrixCommandOptions commandOptionsDefault)
Parameters
commandKey IHystrixCommandKey
optionsStrategy HystrixOptionsStrategy
commandOptionsDefault IHystrixCommandOptions
Returns
- IHystrixCommandOptions
InitExecutionHook(HystrixCommandExecutionHook)
protected static HystrixCommandExecutionHook InitExecutionHook(HystrixCommandExecutionHook fromConstructor)
Parameters
fromConstructor HystrixCommandExecutionHook
Returns
- HystrixCommandExecutionHook
InitGroupKey(IHystrixCommandGroupKey)
protected static IHystrixCommandGroupKey InitGroupKey(IHystrixCommandGroupKey fromConstructor)
Parameters
fromConstructor IHystrixCommandGroupKey
Returns
- IHystrixCommandGroupKey
InitMetrics(HystrixCommandMetrics, IHystrixCommandGroupKey, IHystrixThreadPoolKey, IHystrixCommandKey, IHystrixCommandOptions)
protected static HystrixCommandMetrics InitMetrics(HystrixCommandMetrics fromConstructor, IHystrixCommandGroupKey groupKey, IHystrixThreadPoolKey threadPoolKey, IHystrixCommandKey commandKey, IHystrixCommandOptions properties)
Parameters
fromConstructor HystrixCommandMetrics
groupKey IHystrixCommandGroupKey
threadPoolKey IHystrixThreadPoolKey
commandKey IHystrixCommandKey
properties IHystrixCommandOptions
Returns
- HystrixCommandMetrics
InitRequestLog(bool)
protected static HystrixRequestLog InitRequestLog(bool enabled)
Parameters
enabled bool
Returns
- HystrixRequestLog
InitThreadPool(IHystrixThreadPool, IHystrixThreadPoolKey, IHystrixThreadPoolOptions)
protected static IHystrixThreadPool InitThreadPool(IHystrixThreadPool fromConstructor, IHystrixThreadPoolKey threadPoolKey, IHystrixThreadPoolOptions threadPoolPropertiesDefaults)
Parameters
fromConstructor IHystrixThreadPool
threadPoolKey IHystrixThreadPoolKey
threadPoolPropertiesDefaults IHystrixThreadPoolOptions
Returns
- IHystrixThreadPool
InitThreadPoolKey(IHystrixThreadPoolKey, IHystrixCommandGroupKey, string)
protected static IHystrixThreadPoolKey InitThreadPoolKey(IHystrixThreadPoolKey threadPoolKey, IHystrixCommandGroupKey groupKey, string threadPoolKeyOverride)
Parameters
threadPoolKey IHystrixThreadPoolKey
groupKey IHystrixCommandGroupKey
threadPoolKeyOverride string
Returns
- IHystrixThreadPoolKey
PutInCacheIfAbsent(Task<TResult>, out Task<TResult>)
protected bool PutInCacheIfAbsent(Task<TResult> hystrixTask, out Task<TResult> fromCache)
Parameters
hystrixTask Task<TResult>
fromCache Task<TResult>
Returns
- bool
Setup()
StartCommand()
protected void StartCommand()