{
  "model": {
    "kind": "model",
    "name": "hystrixConfiguration",
    "title": "Hystrix Configuration",
    "description": "Hystrix Circuit Breaker EIP configuration",
    "deprecated": true,
    "label": "eip,routing,circuitbreaker",
    "javaType": "org.apache.camel.model.HystrixConfigurationDefinition",
    "input": false,
    "output": false
  },
  "properties": {
    "groupKey": { "kind": "attribute", "displayName": "Group Key", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "defaultValue": "CamelHystrix", "description": "Sets the group key to use. The default value is CamelHystrix." },
    "threadPoolKey": { "kind": "attribute", "displayName": "Thread Pool Key", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "defaultValue": "CamelHystrix", "description": "Sets the thread pool key to use. Will by default use the same value as groupKey has been configured to use." },
    "circuitBreakerEnabled": { "kind": "attribute", "displayName": "Circuit Breaker Enabled", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": true, "description": "Whether to use a HystrixCircuitBreaker or not. If false no circuit-breaker logic will be used and all requests permitted. This is similar in effect to circuitBreakerForceClosed() except that continues tracking metrics and knowing whether it should be open\/closed, this property results in not even instantiating a circuit-breaker." },
    "circuitBreakerErrorThresholdPercentage": { "kind": "attribute", "displayName": "Circuit Breaker Error Threshold Percentage", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "defaultValue": "50", "description": "Error percentage threshold (as whole number such as 50) at which point the circuit breaker will trip open and reject requests. It will stay tripped for the duration defined in circuitBreakerSleepWindowInMilliseconds; The error percentage this is compared against comes from HystrixCommandMetrics.getHealthCounts()." },
    "circuitBreakerForceClosed": { "kind": "attribute", "displayName": "Circuit Breaker Force Closed", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": false, "description": "If true the HystrixCircuitBreaker#allowRequest() will always return true to allow requests regardless of the error percentage from HystrixCommandMetrics.getHealthCounts(). The circuitBreakerForceOpen() property takes precedence so if it set to true this property does nothing." },
    "circuitBreakerForceOpen": { "kind": "attribute", "displayName": "Circuit Breaker Force Open", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": false, "description": "If true the HystrixCircuitBreaker.allowRequest() will always return false, causing the circuit to be open (tripped) and reject all requests. This property takes precedence over circuitBreakerForceClosed();" },
    "circuitBreakerRequestVolumeThreshold": { "kind": "attribute", "displayName": "Circuit Breaker Request Volume Threshold", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "defaultValue": "20", "description": "Minimum number of requests in the metricsRollingStatisticalWindowInMilliseconds() that must exist before the HystrixCircuitBreaker will trip. If below this number the circuit will not trip regardless of error percentage." },
    "circuitBreakerSleepWindowInMilliseconds": { "kind": "attribute", "displayName": "Circuit Breaker Sleep Window In Milliseconds", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "defaultValue": "5000", "description": "The time in milliseconds after a HystrixCircuitBreaker trips open that it should wait before trying requests again." },
    "executionIsolationSemaphoreMaxConcurrentRequests": { "kind": "attribute", "displayName": "Execution Isolation Semaphore Max Concurrent Requests", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "defaultValue": "20", "description": "Number of concurrent requests permitted to HystrixCommand.run(). Requests beyond the concurrent limit will be rejected. Applicable only when executionIsolationStrategy == SEMAPHORE." },
    "executionIsolationStrategy": { "kind": "attribute", "displayName": "Execution Isolation Strategy", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "SEMAPHORE", "THREAD" ], "deprecated": false, "secret": false, "defaultValue": "THREAD", "description": "What isolation strategy HystrixCommand.run() will be executed with. If THREAD then it will be executed on a separate thread and concurrent requests limited by the number of threads in the thread-pool. If SEMAPHORE then it will be executed on the calling thread and concurrent requests limited by the semaphore count." },
    "executionIsolationThreadInterruptOnTimeout": { "kind": "attribute", "displayName": "Execution Isolation Thread Interrupt On Timeout", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": true, "description": "Whether the execution thread should attempt an interrupt (using Future#cancel ) when a thread times out. Applicable only when executionIsolationStrategy() == THREAD." },
    "executionTimeoutInMilliseconds": { "kind": "attribute", "displayName": "Execution Timeout In Milliseconds", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "defaultValue": "1000", "description": "Time in milliseconds at which point the command will timeout and halt execution. If executionIsolationThreadInterruptOnTimeout == true and the command is thread-isolated, the executing thread will be interrupted. If the command is semaphore-isolated and a HystrixObservableCommand, that command will get unsubscribed." },
    "executionTimeoutEnabled": { "kind": "attribute", "displayName": "Execution Timeout Enabled", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": true, "description": "Whether the timeout mechanism is enabled for this command" },
    "fallbackIsolationSemaphoreMaxConcurrentRequests": { "kind": "attribute", "displayName": "Fallback Isolation Semaphore Max Concurrent Requests", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "defaultValue": "10", "description": "Number of concurrent requests permitted to HystrixCommand.getFallback(). Requests beyond the concurrent limit will fail-fast and not attempt retrieving a fallback." },
    "fallbackEnabled": { "kind": "attribute", "displayName": "Fallback Enabled", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": true, "description": "Whether HystrixCommand.getFallback() should be attempted when failure occurs." },
    "metricsHealthSnapshotIntervalInMilliseconds": { "kind": "attribute", "displayName": "Metrics Health Snapshot Interval In Milliseconds", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "defaultValue": "500", "description": "Time in milliseconds to wait between allowing health snapshots to be taken that calculate success and error percentages and affect HystrixCircuitBreaker.isOpen() status. On high-volume circuits the continual calculation of error percentage can become CPU intensive thus this controls how often it is calculated." },
    "metricsRollingPercentileBucketSize": { "kind": "attribute", "displayName": "Metrics Rolling Percentile Bucket Size", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "defaultValue": "10", "description": "Maximum number of values stored in each bucket of the rolling percentile. This is passed into HystrixRollingPercentile inside HystrixCommandMetrics." },
    "metricsRollingPercentileEnabled": { "kind": "attribute", "displayName": "Metrics Rolling Percentile Enabled", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": true, "description": "Whether percentile metrics should be captured using HystrixRollingPercentile inside HystrixCommandMetrics." },
    "metricsRollingPercentileWindowInMilliseconds": { "kind": "attribute", "displayName": "Metrics Rolling Percentile Window In Milliseconds", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "defaultValue": "10000", "description": "Duration of percentile rolling window in milliseconds. This is passed into HystrixRollingPercentile inside HystrixCommandMetrics." },
    "metricsRollingPercentileWindowBuckets": { "kind": "attribute", "displayName": "Metrics Rolling Percentile Window Buckets", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "defaultValue": "6", "description": "Number of buckets the rolling percentile window is broken into. This is passed into HystrixRollingPercentile inside HystrixCommandMetrics." },
    "metricsRollingStatisticalWindowInMilliseconds": { "kind": "attribute", "displayName": "Metrics Rolling Statistical Window In Milliseconds", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "defaultValue": "10000", "description": "This property sets the duration of the statistical rolling window, in milliseconds. This is how long metrics are kept for the thread pool. The window is divided into buckets and rolls by those increments." },
    "metricsRollingStatisticalWindowBuckets": { "kind": "attribute", "displayName": "Metrics Rolling Statistical Window Buckets", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "defaultValue": "10", "description": "Number of buckets the rolling statistical window is broken into. This is passed into HystrixRollingNumber inside HystrixCommandMetrics." },
    "requestLogEnabled": { "kind": "attribute", "displayName": "Request Log Enabled", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": true, "description": "Whether HystrixCommand execution and events should be logged to HystrixRequestLog." },
    "corePoolSize": { "kind": "attribute", "displayName": "Core Pool Size", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "defaultValue": "10", "description": "Core thread-pool size that gets passed to java.util.concurrent.ThreadPoolExecutor#setCorePoolSize(int)" },
    "maximumSize": { "kind": "attribute", "displayName": "Maximum Size", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "defaultValue": "10", "description": "Maximum thread-pool size that gets passed to ThreadPoolExecutor#setMaximumPoolSize(int) . This is the maximum amount of concurrency that can be supported without starting to reject HystrixCommands. Please note that this setting only takes effect if you also set allowMaximumSizeToDivergeFromCoreSize" },
    "keepAliveTime": { "kind": "attribute", "displayName": "Keep Alive Time", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "defaultValue": "1", "description": "Keep-alive time in minutes that gets passed to ThreadPoolExecutor#setKeepAliveTime(long,TimeUnit)" },
    "maxQueueSize": { "kind": "attribute", "displayName": "Max Queue Size", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "defaultValue": "-1", "description": "Max queue size that gets passed to BlockingQueue in HystrixConcurrencyStrategy.getBlockingQueue(int) This should only affect the instantiation of a threadpool - it is not eliglible to change a queue size on the fly. For that, use queueSizeRejectionThreshold()." },
    "queueSizeRejectionThreshold": { "kind": "attribute", "displayName": "Queue Size Rejection Threshold", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "defaultValue": "5", "description": "Queue size rejection threshold is an artificial max size at which rejections will occur even if maxQueueSize has not been reached. This is done because the maxQueueSize of a BlockingQueue can not be dynamically changed and we want to support dynamically changing the queue size that affects rejections. This is used by HystrixCommand when queuing a thread for execution." },
    "threadPoolRollingNumberStatisticalWindowInMilliseconds": { "kind": "attribute", "displayName": "Thread Pool Rolling Number Statistical Window In Milliseconds", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "defaultValue": "10000", "description": "Duration of statistical rolling window in milliseconds. This is passed into HystrixRollingNumber inside each HystrixThreadPoolMetrics instance." },
    "threadPoolRollingNumberStatisticalWindowBuckets": { "kind": "attribute", "displayName": "Thread Pool Rolling Number Statistical Window Buckets", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "defaultValue": "10", "description": "Number of buckets the rolling statistical window is broken into. This is passed into HystrixRollingNumber inside each HystrixThreadPoolMetrics instance." },
    "allowMaximumSizeToDivergeFromCoreSize": { "kind": "attribute", "displayName": "Allow Maximum Size To Diverge From Core Size", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": false, "description": "Allows the configuration for maximumSize to take effect. That value can then be equal to, or higher, than coreSize" },
    "id": { "kind": "attribute", "displayName": "Id", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "The id of this node" }
  }
}
