Author: buildbot
Date: Thu Oct 6 13:18:59 2016
New Revision: 998962
Log:
Production update by buildbot for camel
Modified:
websites/production/camel/content/cache/main.pageCache
websites/production/camel/content/hystrix-eip.html
Modified: websites/production/camel/content/cache/main.pageCache
==============================================================================
Binary files - no diff available.
Modified: websites/production/camel/content/hystrix-eip.html
==============================================================================
--- websites/production/camel/content/hystrix-eip.html (original)
+++ websites/production/camel/content/hystrix-eip.html Thu Oct 6 13:18:59 2016
@@ -85,14 +85,14 @@
<tbody>
<tr>
<td valign="top" width="100%">
-<div class="wiki-content maincontent"><h2 id="HystrixEIP-HystrixEIP">Hystrix
EIP</h2><p><strong>Available as of Camel 2.18</strong></p><p>The hystrix EIP
provides integration with Netflix <a shape="rect" class="external-link"
href="https://github.com/Netflix/Hystrix" rel="nofollow">Hystrix</a> to be
used as circuit breaker in the Camel routes. Hystrix is a latency and fault
tolerance library designed to isolate points of access to remote systems,
services and 3rd party libraries, stop cascading failure and enable resilience
in complex distributed systems where failure is inevitable.</p><p>Maven users
will need to add the following dependency to their pom.xml for this
EIP:</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
+<div class="wiki-content maincontent"><h2 id="HystrixEIP-HystrixEIP">Hystrix
EIP</h2><p><strong>Available as of Camel 2.18</strong></p><p>The hystrix EIP
provides integration with Netflix <a shape="rect" class="external-link"
href="https://github.com/Netflix/Hystrix" rel="nofollow">Hystrix</a> to be
used as circuit breaker in the Camel routes. Hystrix is a latency and fault
tolerance library designed to isolate points of access to remote systems,
services and 3rd party libraries, stop cascading failure and enable resilience
in complex distributed systems where failure is inevitable.</p><p>Maven users
will need to add the following dependency to
their <strong><code>pom.xml</code></strong> to use this EIP:</p><div
class="code panel pdl" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
<script class="brush: xml; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-hystrix</artifactId>
<version>x.x.x</version><!-- use the same version as your
Camel core version -->
</dependency>
]]></script>
-</div></div><h3 id="HystrixEIP-ConfigurationOptions">Configuration
Options</h3><p>The EIP supports the following options. The default values are
coming from Hystrix itself.</p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd">commandKey</td><td colspan="1" rowspan="1"
class="confluenceTd">Node id</td><td colspan="1" rowspan="1"
class="confluenceTd">String</td><td colspan="1" rowspan="1"
class="confluenceTd">Used to identify the hystrix command. This option cannot
be configured but is locked down to be the node id to make the command
unique.</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>groupKey</p></td><td colspan="1" ro
wspan="1" class="confluenceTd"><p>CamelHystrix</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Used to identify the hystrix group being used by the
EIP to correlate statistics, circuit-breaker, properties,
etc.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>threadPoolKey</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Used to define which thread-pool this command should
run in. By default this is using the same key as the group
key.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>corePoolSize</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>10</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Integer</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>This property sets the core thread-pool si
ze. This is the maximum number of HystrixCommands that can execute
concurrently.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>keepAliveTime</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Integer</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>This property sets the keep-alive time, in
minutes.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>maxQueueSize</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>-1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Integer</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>This property sets the maximum queue size of the
BlockingQueue implementation.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>queueSizeRejectionThreshold</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>5</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Integer</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>This property sets the queue
size rejection threshold — an artificial maximum queue size at which
rejections will occur even if maxQueueSize has not been
reached.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>threadPoolMetricsRollingStatisticalWindowInMilliseconds</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>10000</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Integer</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>This property sets the duration of the statistical
rolling window, in milliseconds. This is how long metrics are kept for the
thread pool.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>threadPoolMetricsRollingStatisticalWindowBuckets</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>10</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Integer</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>This property
sets the number of buckets the rolling statistical window is divided
into.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>circuitBreakerEnabled</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Boolean</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>This property determines whether a circuit breaker will
be used to track health and to short-circuit requests if it
trips.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>circuitBreakerErrorThresholdPercentage</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>50</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Integer</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>This property sets the error percentage at or above
which the circuit should trip open and start short-circuiting requests to
fallback logic.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>circ
uitBreakerForceClosed</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Boolean</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>This property, if true, forces the circuit breaker into
a closed state in which it will allow requests regardless of the error
percentage.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>circuitBreakerForceOpen</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Boolean</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>This property, if true, forces the circuit breaker into
an open (tripped) state in which it will reject all
requests.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>circuitBreakerRequestVolumeThreshold</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>20</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Integer<
/p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>This property sets
the minimum number of requests in a rolling window that will trip the
circuit.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>circuitBreakerSleepWindowInMilliseconds</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>5000</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Integer</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>This property sets the amount of time, after tripping
the circuit, to reject requests before allowing attempts again to determine if
the circuit should again be closed.</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p>executionIsolationSemaphoreMaxConcurrentRequests</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>10</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Integer</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>This property sets the maximum number of requests
allowed t
o a HystrixCommand.run() method when you are using
ExecutionIsolationStrategy.SEMAPHORE.</p><p>If this maximum concurrent limit is
hit then subsequent requests will be rejected.</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>executionIsolationStrategy</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>THREAD</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>This property indicates which isolation strategy
HystrixCommand.run() executes with, one of the following two
choices:</p><ul><li><p>THREAD — it executes on a separate thread and
concurrent requests are limited by the number of threads in the
thread-pool</p></li><li><p>SEMAPHORE — it executes on the calling thread
and concurrent requests are limited by the semaphore
count</p></li></ul></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>executionIsolationThreadInterruptOnTimeout</p></td><td
colspan=
"1" rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Boolean</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>This property indicates whether the
HystrixCommand.run() execution should be interrupted when a timeout
occurs.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>executionTimeoutInMilliseconds</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>1000</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Integer</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>This property sets the time in milliseconds after which
the caller will observe a timeout and walk away from the command
execution.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>executionTimeoutEnabled</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Boolean</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>T
his property indicates whether the HystrixCommand.run() execution should have
a timeout.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>fallbackIsolationSemaphoreMaxConcurrentRequests</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>10</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Integer</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>This property sets the maximum number of requests a
HystrixCommand.getFallback() method is allowed to make from the calling
thread.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>fallbackEnabled</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Boolean</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>This property determines whether a call to
HystrixCommand.getFallback() will be attempted when failure or rejection
occurs.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">
<p>metricsHealthSnapshotIntervalInMilliseconds</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>500</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Integer</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>This property sets the time to wait, in milliseconds,
between allowing health snapshots to be taken that calculate success and error
percentages and affect circuit breaker status.</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p>metricsRollingPercentileBucketSize</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>100</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Integer</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>This property sets the maximum number of execution
times that are kept per bucket. If more executions occur during the time they
will wrap around and start over-writing at the beginning of the
bucket.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>metricsRolli
ngPercentileEnabled</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Boolean</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>This property indicates whether execution latencies
should be tracked and calculated as percentiles. If they are disabled, all
summary statistics (mean, percentiles) are returned as -1.</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>metricsRollingPercentileWindowInMilliseconds</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>60000</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Integer</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>This property sets the duration of the rolling window
in which execution times are kept to allow for percentile calculations, in
milliseconds.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>metricsRollingPercentileWindowBuckets</p></td><td
colspan="1" rowspan="1" clas
s="confluenceTd"><p>6</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Integer</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>This property sets the number of buckets the
rollingPercentile window will be divided into.</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p>metricsRollingStatisticalWindowInMilliseconds</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>10000</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Integer</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>The following properties are related to capturing
metrics from HystrixCommand and HystrixObservableCommand
execution.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>metricsRollingStatisticalWindowBuckets</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>10</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Integer</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>This property sets the number
of buckets the rolling statistical window is divided
into.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>requestLogEnabled</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Boolean</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>This property indicates whether HystrixCommand
execution and events should be logged to
HystrixRequestLog.</p></td></tr></tbody></table></div><p> </p><h3
id="HystrixEIP-Example">Example</h3><p>Below is an example route that with
Hystrix endpoint that protects agains slow operation and fallbacks to the
inlined fallback route. By default the timeout request is just 1000 millis (1
sec) so the http endpoint has to be fairly quick to succeed.</p><div
class="code panel pdl" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
+</div></div><h3 id="HystrixEIP-ConfigurationOptions">Configuration
Options</h3><p>The EIP supports the following options. The default values are
coming from Hystrix itself.</p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p><code>circuitBreakerEnabled</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>Boolean</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>This property determines whether a circuit
breaker will be used to track health and to short-circuit requests if it
trips.</p></td></tr><tr><td colspan="1" rowspan=
"1"
class="confluenceTd"><p><code>circuitBreakerErrorThresholdPercentage</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>50</code></p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>Integer</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>This property sets the error percentage at
or above which the circuit should trip open and start short-circuiting requests
to fallback logic.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>circuitBreakerForceClosed</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>Boolean</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>This property, if
<strong><code>true</code></strong>, forces the circuit breaker into a closed
state in which it will allow requests regardless of the error
percentage.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenc
eTd"><p><code>circuitBreakerForceOpen</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>Boolean</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>This property, if
<strong><code>true</code></strong>, forces the circuit breaker into an open
(tripped) state in which it will reject all requests.</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>circuitBreakerRequestVolumeThreshold</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>20</code></p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>Integer</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>This property sets the minimum number of
requests in a rolling window that will trip the circuit.</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>circuitBreakerSleepWindowInMilliseconds</code></p></td><td
colspan="1" rows
pan="1" class="confluenceTd"><p><code>5000</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>Integer</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>This property sets the amount
of time, after tripping the circuit, to reject requests before allowing
attempts again to determine if the circuit should again be
closed.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>commandKey</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>Node id</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Used to identify the hystrix
command. This option cannot be configured but is locked down to be the node id
to make the command unique.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>corePoolSize</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>10</code></p></td><td cols
pan="1" rowspan="1" class="confluenceTd"><p><code>Integer</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>This property sets the core
thread-pool size. This is the maximum number
of <strong><code>HystrixCommands</code></strong> that can execute
concurrently.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>executionIsolationSemaphoreMaxConcurrentRequests</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>10</code></p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>Integer</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>This property sets the maximum number of
requests allowed to a <strong><code>HystrixCommand.run()</code></strong>
method when you are using
<strong><code>ExecutionIsolationStrategy.SEMAPHORE</code></strong>.</p><p>If
this maximum concurrent limit is hit then subsequent requests will be
rejected.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd
"><p><code>executionIsolationStrategy</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>THREAD</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>This property indicates which isolation
strategy <strong><code>HystrixCommand.run()</code></strong> executes with,
one of the following two
choices:</p><ul><li><p><strong><code>THREAD</code></strong> — it executes
on a separate thread and concurrent requests are limited by the number of
threads in the
thread-pool</p></li><li><p><strong><code>SEMAPHORE</code></strong> — it
executes on the calling thread and concurrent requests are limited by the
semaphore count</p></li></ul></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>executionIsolationThreadInterruptOnTimeout</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td
colspan="1" rowspan="1" c
lass="confluenceTd"><p><code>Boolean</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>This property indicates whether
the <strong><code>HystrixCommand.run()</code></strong> execution should be
interrupted when a timeout occurs.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>executionTimeoutInMilliseconds</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>1000</code></p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>Integer</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>This property sets the timeout in
milliseconds for execution completion.</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p><code>executionTimeoutEnabled</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>Boolean</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>This property in
dicates whether the execution of
<strong><code>HystrixCommand.run()</code></strong> should be
timed.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>fallbackEnabled</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>Boolean</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>This property determines
whether a call
to <strong><code>HystrixCommand.getFallback()</code></strong> will be
attempted when failure or rejection occurs.</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p><code>fallbackIsolationSemaphoreMaxConcurrentRequests</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>10</code></p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>Integer</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>This property sets the maximum number of
requests a <strong><code>Hy
strixCommand.getFallback()</code></strong> method is allowed to make from the
calling thread.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>groupKey</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>CamelHystrix</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Used to identify the hystrix
group being used by the EIP to correlate statistics, circuit-breaker,
properties, etc.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>keepAliveTime</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>1</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>Integer</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>This property sets the
keep-alive time, in minutes.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>maxQueueSize</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>-1</code></p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>Integer</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>This property sets the maximum queue size
of the <strong><code>BlockingQueue</code></strong>
implementation.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>metricsHealthSnapshotIntervalInMilliseconds</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>500</code></p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>Integer</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>This property sets the time to wait, in
milliseconds, between allowing health snapshots to be taken that calculate
success and error percentages and affect circuit breaker
status.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>metricsRollingPercentileBucketSize</code></p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>100</code></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>Integer</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>This property sets the maximum number of
execution times that are kept per bucket. If more executions occur during the
time they will wrap around and start over-writing at the beginning of the
bucket.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>metricsRollingPercentileEnabled</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>Boolean</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>This property indicates whether execution
latency should be tracked. The latency is calculated as a percentile.
If <strong><code>false</code></strong> summary statistics (mean,
percentiles) are returned as
<strong><code>-1</code></strong>.</p></td></tr><tr><td colspan="1" row
span="1"
class="confluenceTd"><p><code>metricsRollingPercentileWindowBuckets</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>6</code></p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>Integer</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>This property sets the number of buckets
the <strong><code>rollingPercentile</code></strong> window will be divided
into.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>metricsRollingPercentileWindowInMilliseconds</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>60000</code></p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>Integer</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>This property sets the duration of the
rolling window in which execution times are kept to allow for percentile
calculations, in milliseconds.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>metri
csRollingStatisticalWindowBuckets</code></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>10</code></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>Integer</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>This property sets the number of buckets
the rolling statistical window is divided into.</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>metricsRollingStatisticalWindowInMilliseconds</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>10000</code></p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>Integer</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>The following properties are related to
capturing metrics from <strong><code>HystrixCommand</code></strong>
and <strong><code>HystrixObservableCommand</code></strong>
execution.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>queueSizeRejectionThreshold</code></p><
/td><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>5</code></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>Integer</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>This property sets the queue size rejection
threshold — an artificial maximum queue size at which rejections will
occur even if <strong><code>maxQueueSize</code></strong> has not been
reached.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>requestLogEnabled</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>Boolean</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>This property indicates
whether <strong><code>HystrixCommand</code></strong> execution and events
should be logged to
<strong><code>HystrixRequestLog</code></strong>.</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>threadPoolKey</
code></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Used to define which thread-pool this command should
run in. By default this is using the same key as the group
key.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>threadPoolMetricsRollingStatisticalWindowBuckets</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>10</code></p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>Integer</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>This property sets the number of buckets
the rolling statistical window is divided into.</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>threadPoolMetricsRollingStatisticalWindowInMilliseconds</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>10000</code></p
></td><td colspan="1" rowspan="1"
>class="confluenceTd"><p><code>Integer</code></p></td><td colspan="1"
>rowspan="1" class="confluenceTd"><p>This property sets the duration of the
>statistical rolling window, in milliseconds. This is how long metrics are
>kept for the thread pool.</p></td></tr></tbody></table></div><p> </p><h3
>id="HystrixEIP-Example">Example</h3><p>Below is an example route showing an
>Hystrix endpoint that protects against slow operation by falling back to the
>in-lined fallback route. By default the timeout request is
>just <strong><code>1000ms</code></strong> so the HTTP endpoint has to be
>fairly quick to succeed.</p><div class="code panel pdl" style="border-width:
>1px;"><div class="codeContent panelContent pdl">
<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[from("direct:start")
.hystrix()
.to("http://fooservice.com/slow")
@@ -115,7 +115,7 @@
<to uri="mock:result"/>
</route>
</camelContext>]]></script>
-</div></div><h3 id="HystrixEIP-onFallbackvsonFallbackViaNetwork">onFallback vs
onFallbackViaNetwork</h3><p>If you are using onFallback then that is intended
to be local processing only where you can do a message transformation or call a
bean or something as the fallback. If you need to call an external service over
the network then you should use onFallbackViaNetwork that runs in another
indepedent HystrixCommand that uses its own thread pool to not exhaust the
first command.</p><h3 id="HystrixEIP-ConfiguringHystrixExample">Configuring
Hystrix Example</h3><p>Hystrix has many options as listed in the table above.
For example to set a higher timeout to 5 seconds, and also let the circuit
breaker wait 10 seconds before attempting a request again when the state was
tripped to be open.</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeContent panelContent pdl">
+</div></div><h3 id="HystrixEIP-onFallbackvsonFallbackViaNetwork">onFallback vs
onFallbackViaNetwork</h3><p>If you are
using <strong><code>onFallback</code></strong> then that is intended to be
local processing only where you can do a message transformation or call a bean
or something as the fallback. If you need to call an external service over the
network then you should
use <strong><code>onFallbackViaNetwork</code></strong> that runs in
another independent <strong><code>HystrixCommand</code></strong> that uses
its own thread pool to not exhaust the first command.</p><h3
id="HystrixEIP-ConfiguringHystrixExample">Configuring Hystrix
Example</h3><p>Hystrix has many options as listed in the table above. For
example to set a higher timeout to <strong><code>5</code></strong>
seconds, and also let the circuit breaker
wait <strong><code>10</code></strong> seconds before attempting a request
again when the state was tripped to be open.</p><div class="code panel pdl
" style="border-width: 1px;"><div class="codeContent panelContent pdl">
<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[from("direct:start")
.hystrix()
.hystrixConfiguration()