CAMEL-9983: camel-hystrix - Lets removed the component now that we have the EIP


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/93f5952e
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/93f5952e
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/93f5952e

Branch: refs/heads/master
Commit: 93f5952e46eef547857f81a745c165c46c4aa266
Parents: f84963b
Author: Claus Ibsen <davscl...@apache.org>
Authored: Tue May 24 09:33:37 2016 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Tue May 24 09:34:36 2016 +0200

----------------------------------------------------------------------
 .../camel-hystrix/src/main/docs/hystrix.adoc    | 302 -----------
 .../component/hystrix/CamelHystrixCommand.java  | 107 ----
 .../component/hystrix/HystrixComponent.java     |  38 --
 .../component/hystrix/HystrixConfiguration.java | 543 -------------------
 .../component/hystrix/HystrixConstants.java     |  88 ---
 .../component/hystrix/HystrixEndpoint.java      |  88 ---
 .../component/hystrix/HystrixProducer.java      | 387 -------------
 .../hystrix/processor/HystrixConstants.java     |  28 +
 .../hystrix/processor/HystrixProcessor.java     |   1 -
 .../services/org/apache/camel/component/hystrix |  18 -
 .../component/hystrix/HystrixComponentBase.java |  37 --
 .../hystrix/HystrixComponentCacheTest.java      |  84 ---
 .../HystrixComponentCircuitBreakerTest.java     |  74 ---
 .../hystrix/HystrixComponentFallbackTest.java   |  98 ----
 .../HystrixComponentOverrideRunTest.java        |  67 ---
 .../HystrixComponentRequestContextTest.java     | 101 ----
 .../hystrix/HystrixComponentTimeOutTest.java    |  98 ----
 .../camel/component/hystrix/TryCatchTest.java   |  53 --
 .../BlueprintHystrixRouteFallbackTest.java      |   1 -
 .../processor/BlueprintHystrixRouteOkTest.java  |   1 -
 .../processor/HystrixRouteFallbackTest.java     |   1 -
 .../HystrixRouteFallbackViaNetworkTest.java     |   1 -
 .../hystrix/processor/HystrixRouteOkTest.java   |   1 -
 .../SpringHystrixRouteFallbackTest.java         |   1 -
 .../processor/SpringHystrixRouteOkTest.java     |   1 -
 25 files changed, 28 insertions(+), 2191 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/93f5952e/components/camel-hystrix/src/main/docs/hystrix.adoc
----------------------------------------------------------------------
diff --git a/components/camel-hystrix/src/main/docs/hystrix.adoc 
b/components/camel-hystrix/src/main/docs/hystrix.adoc
deleted file mode 100644
index f15a342..0000000
--- a/components/camel-hystrix/src/main/docs/hystrix.adoc
+++ /dev/null
@@ -1,302 +0,0 @@
-[[Hystrix-HystrixComponent]]
-Hystrix Component
-~~~~~~~~~~~~~~~~~
-
-*Available as of Camel 2.18*
-
-The hystrix component provides integration with Netflix
-https://github.com/Netflix/Hystrix[Hystrix]. 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.
-
-The current implementation wraps a Camel endpoint in HystrixCommand and
-provides synchronous execution (using Hystrix thread pools), fallback to
-a different Camel endpoint, request caching (with custom request context
-and cache clearing), timeouts. It does not implement request collapsing
-yet.
-
-Maven users will need to add the following dependency to their pom.xml
-for this component:
-
-[source,xml]
-------------------------------------------------------------------------------------
-<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>
-------------------------------------------------------------------------------------
-
-[[Hystrix-URIformat]]
-URI format
-^^^^^^^^^^
-
-[source,java]
----------------------------
-hystrix::groupKey[?options]
----------------------------
-
-[[Hystrix-URIOptions]]
-URI Options
-^^^^^^^^^^^
-
-All URI options can be overriden through message headers. Most of the
-default values are coming from Hystrix itself.
-
-
-// component options: START
-The Hystrix component has no options.
-// component options: END
-
-
-
-
-// endpoint options: START
-The Hystrix component supports 38 endpoint options which are listed below:
-
-{% raw %}
-[width="100%",cols="2s,1,1m,1m,5",options="header"]
-|=======================================================================
-| Name | Group | Default | Java Type | Description
-| groupKey | producer |  | String | *Required* Specifies the group key to use
-| cacheKey | producer |  | String | Specifies the cache key to use. Uses the 
simple language as the expression. But you can refer to an existing expression 
using lookup.
-| commandKey | producer | CamelHystrixCommand | String | Used to identify a 
HystrixCommand instance for statistics circuit-breaker properties etc. By 
default this will be derived from the instance class name.
-| fallbackEnabled | producer | true | Boolean | Whether link 
HystrixCommandgetFallback() should be attempted when failure occurs.
-| fallbackEndpoint | producer |  | String | Specifies the fallback endpoint to 
use Specify either an url or name of existing endpoint.
-| metricsEnabled | producer | false | boolean | Whether to include a number of 
headers with metrics details of the circuit breaker utilization
-| requestCacheEnabled | producer | true | Boolean | Whether link 
HystrixCommandgetCacheKey() should be used with HystrixRequestCache to provide 
de-duplication functionality via request-scoped caching.
-| runEndpoint | producer |  | String | *Required* Specifies the endpoint to 
use. Specify either an url or name of existing endpoint.
-| exchangePattern | advanced | InOnly | ExchangePattern | Sets the default 
exchange pattern when creating an exchange
-| synchronous | advanced | false | boolean | Sets whether synchronous 
processing should be strictly used or Camel is allowed to use asynchronous 
processing (if supported).
-| circuitBreakerEnabled | circuitbreaker | true | Boolean | 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 link 
setCircuitBreakerForceClosed(Boolean) except that continues tracking metrics 
and knowing whether it should be open/closed this property results in not even 
instantiating a circuit-breaker.
-| circuitBreakerErrorThresholdPercentage | circuitbreaker | 50 | Integer | 
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 link getCircuitBreakerSleepWindowInMilliseconds(); The 
error percentage this is compared against comes from link 
HystrixCommandMetricsgetHealthCounts().
-| circuitBreakerForceClosed | circuitbreaker |  | Boolean | If true the link 
HystrixCircuitBreakerallowRequest() will always return true to allow requests 
regardless of the error percentage from link 
HystrixCommandMetricsgetHealthCounts(). The circuitBreakerForceOpen property 
takes precedence so if it set to true this property does nothing.
-| circuitBreakerForceOpen | circuitbreaker |  | Boolean | If true the link 
HystrixCircuitBreakerallowRequest() will always return false causing the 
circuit to be open (tripped) and reject all requests. This property takes 
precedence over circuitBreakerForceClosed
-| circuitBreakerRequestVolumeThreshold | circuitbreaker | 20 | Integer | 
Minimum number of requests in the link 
setMetricsRollingStatisticalWindowInMilliseconds(Integer) that must exist 
before the HystrixCircuitBreaker will trip. If below this number the circuit 
will not trip regardless of error percentage.
-| circuitBreakerSleepWindowInMilliseconds | circuitbreaker | 5000 | Integer | 
The time in milliseconds after a HystrixCircuitBreaker trips open that it 
should wait before trying requests again.
-| executionIsolationSemaphoreMaxConcurrentRequests | circuitbreaker | 10 | 
Integer | Number of concurrent requests permitted to link HystrixCommandrun(). 
Requests beyond the concurrent limit will be rejected. Applicable only when 
link getExecutionIsolationStrategy() == SEMAPHORE.
-| executionIsolationStrategy | circuitbreaker | THREAD | String | What 
isolation strategy link HystrixCommandrun() 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 | circuitbreaker | true | Boolean 
| Whether the execution thread should attempt an interrupt (using link 
Futurecancel) when a thread times out. Applicable only when 
executionIsolationStrategy == THREAD.
-| executionTimeoutEnabled | circuitbreaker | true | Boolean | Whether the 
timeout mechanism is enabled for this command
-| executionTimeoutInMilliseconds | circuitbreaker | 1000 | Integer | Allow a 
dynamic override of the HystrixThreadPoolKey that will dynamically change which 
HystrixThreadPool a HystrixCommand executes on. Typically this should return 
NULL which will cause it to use the HystrixThreadPoolKey injected into a 
HystrixCommand or derived from the HystrixCommandGroupKey. When set the 
injected or derived values will be ignored and a new HystrixThreadPool created 
(if necessary) and the HystrixCommand will begin using the newly defined pool.
-| fallbackIsolationSemaphoreMaxConcurrentRequests | circuitbreaker | 10 | 
Integer | Number of concurrent requests permitted to link 
HystrixCommandgetFallback(). Requests beyond the concurrent limit will 
fail-fast and not attempt retrieving a fallback.
-| metricsHealthSnapshotIntervalInMilliseconds | monitoring | 500 | Integer | 
Time in milliseconds to wait between allowing health snapshots to be taken that 
calculate success and error percentages and affect link 
HystrixCircuitBreakerisOpen() status. On high-volume circuits the continual 
calculation of error percentage can become CPU intensive thus this controls how 
often it is calculated.
-| metricsRollingPercentileBucketSize | monitoring | 100 | Integer | Maximum 
number of values stored in each bucket of the rolling percentile. This is 
passed into HystrixRollingPercentile inside HystrixCommandMetrics.
-| metricsRollingPercentileEnabled | monitoring | true | Boolean | Whether 
percentile metrics should be captured using HystrixRollingPercentile inside 
HystrixCommandMetrics.
-| metricsRollingPercentileWindowBuckets | monitoring | 6 | Integer | Number of 
buckets the rolling percentile window is broken into. This is passed into 
HystrixRollingPercentile inside HystrixCommandMetrics.
-| metricsRollingPercentileWindowInMilliseconds | monitoring | 60000 | Integer 
| Duration of percentile rolling window in milliseconds. This is passed into 
HystrixRollingPercentile inside HystrixCommandMetrics.
-| metricsRollingStatisticalWindowBuckets | monitoring | 10 | Integer | Number 
of buckets the rolling statistical window is broken into. This is passed into 
HystrixRollingNumber inside HystrixCommandMetrics.
-| metricsRollingStatisticalWindowInMilliseconds | monitoring | 10000 | Integer 
| Duration of statistical rolling window in milliseconds. This is passed into 
HystrixRollingNumber inside HystrixCommandMetrics.
-| requestLogEnabled | monitoring | true | Boolean | Whether HystrixCommand 
execution and events should be logged to HystrixRequestLog.
-| coreSize | threadpool | 10 | Integer | This property sets the core 
thread-pool size. This is the maximum number of HystrixCommands that can 
execute concurrently.
-| initializeRequestContext | threadpool |  | Boolean | Call this at the 
beginning of each request (from parent thread) to initialize the underlying 
context so that HystrixRequestVariableDefault can be used on any children 
threads and be accessible from the parent thread.
-| keepAliveTime | threadpool | 1 | Integer | This property sets the keep-alive 
time in minutes.
-| maxQueueSize | threadpool | -1 | Integer | This property sets the maximum 
queue size of the BlockingQueue implementation.
-| queueSizeRejectionThreshold | threadpool | 5 | Integer | 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.
-| threadPoolKey | threadpool |  | String | Used to define which thread-pool 
this command should run in. By default this is derived from the 
HystrixCommandGroupKey.
-| threadPoolMetricsRollingStatisticalWindowBuckets | threadpool | 10 | Integer 
| This property sets the number of buckets the rolling statistical window is 
divided into.
-| threadPoolMetricsRollingStatisticalWindowInMilliseconds | threadpool | 10000 
| Integer | This property sets the duration of the statistical rolling window 
in milliseconds. This is how long metrics are kept for the thread pool.
-|=======================================================================
-{% endraw %}
-// endpoint options: END
-
-
-
-[[Hystrix-InMessageHeaders]]
-In Message Headers
-^^^^^^^^^^^^^^^^^^
-
-Used to override URI options per message basis.
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=======================================================================
-
-|Name |Type |Description
-
-|CamelHystrixClearCacheFirst |Boolean |Description and default value provided 
in the URI options section above.
-
-|CamelHystrixRequestContex |HystrixRequestContext |Description and default 
value provided in the URI options section above.
-
-|CamelHystrixGroupKey |String |Description and default value provided in the 
URI options section above.
-
-|CamelHystrixCommandKey |String |Description and default value provided in the 
URI options section above.
-
-|CamelHystrixThreadPoolKey |String |Description and default value provided in 
the URI options section above.
-
-|CamelHystrixRunEndpointId |String |Description and default value provided in 
the URI options section above.
-
-|CamelHystrixFallbackEndpointId |String |Description and default value 
provided in the URI options section above.
-
-|CamelHystrixCorePoolSize |Integer |Description and default value provided in 
the URI options section above.
-
-|CamelHystrixKeepAliveTime |Integer |Description and default value provided in 
the URI options section above.
-
-|CamelHystrixMaxQueueSize |Integer |Description and default value provided in 
the URI options section above.
-
-|CamelHystrixQueueSizeRejectionThreshold |Integer |Description and default 
value provided in the URI options section above.
-
-|CamelHystrixThreadPoolMetricsRollingStatisticalWindowInMilliseconds |Integer 
|Description and default value provided in the URI options section above.
-
-|CamelHystrixThreadPoolRollingNumberStatisticalWindowBuckets |Integer 
|Description and default value provided in the URI options section above.
-
-|CamelHystrixCircuitBreakerEnabled |Boolean |Description and default value 
provided in the URI options section above.
-
-|CamelHystrixCircuitBreakerErrorThresholdPercentage |Integer |Description and 
default value provided in the URI options section above.
-
-|CamelHystrixCircuitBreakerForceClosed |Boolean |Description and default value 
provided in the URI options section above.
-
-|CamelHystrixCircuitBreakerForceOpen |Boolean |Description and default value 
provided in the URI options section above.
-
-|CamelHystrixCircuitBreakerRequestVolumeThreshold |Integer |Description and 
default value provided in the URI options section above.
-
-|CamelHystrixCircuitBreakerSleepWindowInMilliseconds |Integer |Description and 
default value provided in the URI options section above.
-
-|CamelHystrixExecutionIsolationSemaphoreMaxConcurrentRequests |Integer 
|Description and default value provided in the URI options section above.
-
-|CamelHystrixExecutionIsolationStrategy |String |Description and default value 
provided in the URI options section above.
-
-|CamelHystrixExecutionIsolationThreadInterruptOnTimeout |Boolean |Description 
and default value provided in the URI options section above.
-
-|CamelHystrixExecutionTimeoutInMilliseconds |Integer |Description and default 
value provided in the URI options section above.
-
-|CamelHystrixExecutionTimeoutEnabled |Boolean |Description and default value 
provided in the URI options section above.
-
-|CamelHystrixFallbackIsolationSemaphoreMaxConcurrentRequests |Integer 
|Description and default value provided in the URI options section above.
-
-|CamelHystrixFallbackEnabled |Boolean |Description and default value provided 
in the URI options section above.
-
-|CamelHystrixMetricsHealthSnapshotIntervalInMilliseconds |Integer |Description 
and default value provided in the URI options section above.
-
-|CamelHystrixMetricsRollingPercentileBucketSize |Integer |Description and 
default value provided in the URI options section above.
-
-|CamelHystrixMetricsRollingPercentileEnabled |Boolean |Description and default 
value provided in the URI options section above.
-
-|CamelHystrixMetricsRollingPercentileWindowInMilliseconds |Integer 
|Description and default value provided in the URI options section above.
-
-|CamelHystrixMetricsRollingPercentileWindowBuckets |Integer |Description and 
default value provided in the URI options section above.
-
-|CamelHystrixMetricsRollingStatisticalWindowInMilliseconds |Integer 
|Description and default value provided in the URI options section above.
-
-|CamelHystrixMetricsRollingStatisticalWindowBuckets |Integer |Description and 
default value provided in the URI options section above.
-
-|CamelHystrixRequestCacheEnabled |Boolean |Description and default value 
provided in the URI options section above.
-
-|CamelHystrixRequestLogEnabled |Boolean |Description and default value 
provided in the URI options section above.
-|=======================================================================
-
-[[Hystrix-OutMessageHeaders]]
-Out Message Headers
-^^^^^^^^^^^^^^^^^^^
-
-Mainly to provide metrics information.
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=======================================================================
-
-|Name |Type |Description
-
-|CamelHystrixRequestContex |CamelHystrixRequestContex |The default 
CamelHystrixRequestContex created during producer startup.
-
-|CamelHystrixCommandMetricsTotalRequests |long |Number of requests during 
rolling window (failure + success + timeout +
-threadPoolRejected + semaphoreRejected).
-
-|CamelHystrixCommandMetricsErrorCount |long |Number of failed requests during 
rolling window (failure + timeout +
-threadPoolRejected + semaphoreRejected).
-
-|CamelHystrixCommandMetricsErrorPercentage |int |errorCount / totalCount * 100.
-
-|CamelHystrixCommandMetricsCurrentConcurrentExecutionCount |int |Current 
number of concurrent executions of HystrixCommand#run().
-
-|CamelHystrixCommandMetricsExecutionTimeMean |int |The mean (average) 
execution time (in milliseconds) for the
-HystrixCommand#run().
-
-|CamelHystrixCommandMetricsRollingMaxConcurrentExecutions |long |Get the max 
value of values in all buckets for the given
-HystrixRollingNumberEvent.
-
-|CamelHystrixCommandMetricsTotalTimeMean |int |The mean (average) execution 
time (in milliseconds) for
-HystrixCommand#execute().
-
-|CamelHystrixThreadPoolMetricsCurrentActiveCount |int |Returns the approximate 
number of threads that are actively executing
-tasks.
-
-|CamelHystrixThreadPoolMetricsCumulativeCountThreadsExecuted |long |Cumulative 
count of number of threads executed since the start of the
-application.
-
-|CamelHystrixThreadPoolMetricsCurrentCompletedTaskCount |long |Returns the 
approximate total number of tasks that have completed
-execution.
-
-|CamelHystrixThreadPoolMetricsCurrentCorePoolSize |int |Returns the core 
number of threads.
-
-|CamelHystrixThreadPoolMetricsCurrentLargestPoolSize |int |Returns the largest 
number of threads that have ever simultaneously been
-in the pool.
-
-|CamelHystrixThreadPoolMetricsCurrentMaximumPoolSize |int |Returns the maximum 
allowed number of threads.
-
-|CamelHystrixThreadPoolMetricsCurrentPoolSize |int |Returns the current number 
of threads in the pool.
-
-|CamelHystrixThreadPoolMetricsCurrentQueueSize |int |Current size of 
BlockingQueue used by the thread-pool.
-
-|CamelHystrixThreadPoolMetricsCurrentTaskCount |long |Returns the approximate 
total number of tasks that have ever been
-scheduled for execution.
-
-|CamelHystrixThreadPoolMetricsRollingCountThreadsExecuted |long |Rolling count 
of number of threads executed during rolling statistical
-window.
-
-|CamelHystrixThreadPoolMetricsRollingMaxActiveThreads |long |Rolling max 
number of active threads during rolling statistical window.
-|=======================================================================
-
-[[Hystrix-Example]]
-Example
-^^^^^^^
-
-Below is an example route that with Hystrix endpoint that protects
-agains slow operation and fallbacks to a different endpoint.
-
-[source,java]
-----------------------------------------------------------------------------------------------------------------------------
-@Override
-protected CamelContext createCamelContext() throws Exception {
-    SimpleRegistry registry = new SimpleRegistry();
-    CamelContext context = new DefaultCamelContext(registry);
-    registry.put("run", context.getEndpoint("direct:run"));
-    registry.put("fallback", context.getEndpoint("direct:fallback"));
-    registry.put("headerExpression", 
ExpressionBuilder.headerExpression("key"));
-    return context;
-}
-
-@Override
-protected RouteBuilder createRouteBuilder() {
-    return new RouteBuilder() {
-
-        public void configure() {
-
-            from("direct:fallback")
-                    .to("mock:error");
-
-            from("direct:run")
-                    .process(new Processor() {
-                        @Override
-                        public void process(Exchange exchange) throws 
Exception {
-                            Thread.sleep(500); //a slow operation
-                        }
-                    })
-                    .to("mock:result");
-
-            from("direct:start")
-                    
.to("hystrix:testKey?runEndpointId=run&fallbackEndpointId=fallback&executionTimeoutInMilliseconds=100");
-        }
-    };
-}
-----------------------------------------------------------------------------------------------------------------------------
-
-[[Hystrix-SeeAlso]]
-See Also
-^^^^^^^^
-
-* link:configuring-camel.html[Configuring Camel]
-* link:component.html[Component]
-* link:endpoint.html[Endpoint]
-* link:getting-started.html[Getting Started]
-

http://git-wip-us.apache.org/repos/asf/camel/blob/93f5952e/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/CamelHystrixCommand.java
----------------------------------------------------------------------
diff --git 
a/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/CamelHystrixCommand.java
 
b/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/CamelHystrixCommand.java
deleted file mode 100644
index b8eda23..0000000
--- 
a/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/CamelHystrixCommand.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.hystrix;
-
-import com.netflix.hystrix.HystrixCommand;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Producer;
-import org.apache.camel.ProducerCallback;
-import org.apache.camel.impl.ProducerCache;
-
-public class CamelHystrixCommand extends HystrixCommand<Exchange> {
-    private final Exchange exchange;
-    private final String cacheKey;
-    private final Endpoint runEndpoint;
-    private final Endpoint fallbackEndpoint;
-    private final ProducerCache producerCache;
-
-    protected CamelHystrixCommand(Setter setter, Exchange exchange, String 
cacheKey, ProducerCache producerCache, Endpoint runEndpoint, Endpoint 
fallbackEndpoint) {
-        super(setter);
-        this.exchange = exchange;
-        this.cacheKey = cacheKey;
-        this.producerCache = producerCache;
-        this.runEndpoint = runEndpoint;
-        this.fallbackEndpoint = fallbackEndpoint;
-    }
-
-    @Override
-    protected String getCacheKey() {
-        return cacheKey;
-    }
-
-    @Override
-    protected Exchange getFallback() {
-        if (fallbackEndpoint == null) {
-            return exchange;
-        }
-        try {
-            if (exchange.getException() != null) {
-                Exception exception = exchange.getException();
-                exchange.setException(null);
-                if (exception instanceof InterruptedException) {
-                    exchange.removeProperty(Exchange.ROUTE_STOP);
-                }
-            }
-            producerCache.doInProducer(fallbackEndpoint, exchange, 
exchange.getPattern(), new ProducerCallback<Exchange>() {
-                @Override
-                public Exchange doInProducer(Producer producer, Exchange 
exchange, ExchangePattern exchangePattern) throws Exception {
-                    try {
-                        producer.process(exchange);
-                    } catch (Exception e) {
-                        exchange.setException(e);
-                    }
-                    return exchange;
-                }
-            });
-        } catch (Exception e) {
-            exchange.setException(e);
-        }
-        return exchange;
-    }
-
-    @Override
-    protected Exchange run() {
-        try {
-            producerCache.doInProducer(runEndpoint, exchange, 
exchange.getPattern(), new ProducerCallback<Exchange>() {
-                @Override
-                public Exchange doInProducer(Producer producer, Exchange 
exchange, ExchangePattern exchangePattern) throws Exception {
-                    try {
-                        producer.process(exchange);
-                    } catch (Exception e) {
-                        exchange.setException(e);
-                    }
-                    return exchange;
-                }
-            });
-        } catch (Exception e) {
-            exchange.setException(e);
-        }
-
-        if (exchange.getException() != null) {
-            Exception exception = exchange.getException();
-            exchange.setException(null);
-            if (exception instanceof InterruptedException) {
-                exchange.removeProperty(Exchange.ROUTE_STOP);
-            }
-            throw new RuntimeException(exception.getMessage());
-        }
-        return exchange;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/93f5952e/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/HystrixComponent.java
----------------------------------------------------------------------
diff --git 
a/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/HystrixComponent.java
 
b/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/HystrixComponent.java
deleted file mode 100644
index 2fe995e..0000000
--- 
a/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/HystrixComponent.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.hystrix;
-
-import java.util.Map;
-import org.apache.camel.Endpoint;
-import org.apache.camel.impl.UriEndpointComponent;
-
-/**
- * Represents the component that manages {@link HystrixComponent}.
- */
-public class HystrixComponent extends UriEndpointComponent {
-
-    public HystrixComponent() {
-        super(HystrixEndpoint.class);
-    }
-
-    protected Endpoint createEndpoint(String uri, String remaining, 
Map<String, Object> parameters) throws Exception {
-        HystrixConfiguration configuration = new HystrixConfiguration();
-        configuration.setGroupKey(remaining);
-        setProperties(configuration, parameters);
-        return new HystrixEndpoint(uri, this, configuration);
-    }
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/93f5952e/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/HystrixConfiguration.java
----------------------------------------------------------------------
diff --git 
a/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/HystrixConfiguration.java
 
b/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/HystrixConfiguration.java
deleted file mode 100644
index 6fb62d1..0000000
--- 
a/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/HystrixConfiguration.java
+++ /dev/null
@@ -1,543 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.hystrix;
-
-import java.util.concurrent.Future;
-
-import com.netflix.hystrix.HystrixCircuitBreaker;
-import com.netflix.hystrix.HystrixCommand;
-import com.netflix.hystrix.HystrixCommandGroupKey;
-import com.netflix.hystrix.HystrixCommandMetrics;
-import com.netflix.hystrix.HystrixRequestCache;
-import com.netflix.hystrix.HystrixRequestLog;
-import com.netflix.hystrix.HystrixThreadPool;
-import com.netflix.hystrix.HystrixThreadPoolKey;
-import com.netflix.hystrix.strategy.concurrency.HystrixRequestVariableDefault;
-import com.netflix.hystrix.util.HystrixRollingNumber;
-import com.netflix.hystrix.util.HystrixRollingPercentile;
-import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriParams;
-import org.apache.camel.spi.UriPath;
-
-@UriParams
-public class HystrixConfiguration {
-
-    @UriPath
-    @Metadata(required = "true")
-    private String groupKey;
-    @UriParam(defaultValue = "CamelHystrixCommand")
-    private String commandKey;
-    @UriParam
-    @Metadata(required = "true")
-    private String runEndpoint;
-    @UriParam
-    private String cacheKey;
-    @UriParam(defaultValue = "true")
-    private Boolean requestCacheEnabled;
-    @UriParam
-    private String fallbackEndpoint;
-    @UriParam(defaultValue = "true")
-    private Boolean fallbackEnabled;
-    @UriParam
-    private boolean metricsEnabled;
-    @UriParam(label = "threadpool")
-    private String threadPoolKey;
-    @UriParam(label = "threadpool")
-    private Boolean initializeRequestContext;
-    @UriParam(label = "threadpool", defaultValue = "10")
-    private Integer coreSize;
-    @UriParam(label = "threadpool", defaultValue = "1")
-    private Integer keepAliveTime;
-    @UriParam(label = "threadpool", defaultValue = "-1")
-    private Integer maxQueueSize;
-    @UriParam(label = "threadpool", defaultValue = "5")
-    private Integer queueSizeRejectionThreshold;
-    @UriParam(label = "threadpool", defaultValue = "10000")
-    private Integer threadPoolMetricsRollingStatisticalWindowInMilliseconds;
-    @UriParam(label = "threadpool", defaultValue = "10")
-    private Integer threadPoolMetricsRollingStatisticalWindowBuckets;
-    @UriParam(label = "circuitbreaker", defaultValue = "true")
-    private Boolean circuitBreakerEnabled;
-    @UriParam(label = "circuitbreaker", defaultValue = "50")
-    private Integer circuitBreakerErrorThresholdPercentage;
-    @UriParam(label = "circuitbreaker")
-    private Boolean circuitBreakerForceClosed;
-    @UriParam(label = "circuitbreaker")
-    private Boolean circuitBreakerForceOpen;
-    @UriParam(label = "circuitbreaker", defaultValue = "20")
-    private Integer circuitBreakerRequestVolumeThreshold;
-    @UriParam(label = "circuitbreaker", defaultValue = "5000")
-    private Integer circuitBreakerSleepWindowInMilliseconds;
-    @UriParam(label = "circuitbreaker", defaultValue = "10")
-    private Integer executionIsolationSemaphoreMaxConcurrentRequests;
-    @UriParam(label = "circuitbreaker", defaultValue = "THREAD", enums = 
"THREAD,SEMAPHORE")
-    private String executionIsolationStrategy;
-    @UriParam(label = "circuitbreaker", defaultValue = "true")
-    private Boolean executionIsolationThreadInterruptOnTimeout;
-    @UriParam(label = "circuitbreaker", defaultValue = "1000")
-    private Integer executionTimeoutInMilliseconds;
-    @UriParam(label = "circuitbreaker", defaultValue = "true")
-    private Boolean executionTimeoutEnabled;
-    @UriParam(label = "circuitbreaker", defaultValue = "10")
-    private Integer fallbackIsolationSemaphoreMaxConcurrentRequests;
-    @UriParam(label = "monitoring", defaultValue = "500")
-    private Integer metricsHealthSnapshotIntervalInMilliseconds;
-    @UriParam(label = "monitoring", defaultValue = "100")
-    private Integer metricsRollingPercentileBucketSize;
-    @UriParam(label = "monitoring", defaultValue = "true")
-    private Boolean metricsRollingPercentileEnabled;
-    @UriParam(label = "monitoring", defaultValue = "60000")
-    private Integer metricsRollingPercentileWindowInMilliseconds;
-    @UriParam(label = "monitoring", defaultValue = "6")
-    private Integer metricsRollingPercentileWindowBuckets;
-    @UriParam(label = "monitoring", defaultValue = "10000")
-    private Integer metricsRollingStatisticalWindowInMilliseconds;
-    @UriParam(label = "monitoring", defaultValue = "10")
-    private Integer metricsRollingStatisticalWindowBuckets;
-    @UriParam(label = "monitoring", defaultValue = "true")
-    private Boolean requestLogEnabled;
-
-    public String getRunEndpoint() {
-        return runEndpoint;
-    }
-
-    /**
-     * Specifies the endpoint to use.
-     * Specify either an url or name of existing endpoint.
-     */
-    public void setRunEndpoint(String runEndpoint) {
-        this.runEndpoint = runEndpoint;
-    }
-
-    public String getFallbackEndpoint() {
-        return fallbackEndpoint;
-    }
-
-    /**
-     * Specifies the fallback endpoint to use
-     * Specify either an url or name of existing endpoint.
-     */
-    public void setFallbackEndpoint(String fallbackEndpoint) {
-        this.fallbackEndpoint = fallbackEndpoint;
-    }
-
-    public String getCacheKey() {
-        return cacheKey;
-    }
-
-    /**
-     * Specifies the cache key to use.
-     * Uses the simple language as the expression. But you can refer to an 
existing expression using # lookup.
-     */
-    public void setCacheKey(String cacheKey) {
-        this.cacheKey = cacheKey;
-    }
-
-    public Boolean getInitializeRequestContext() {
-        return initializeRequestContext;
-    }
-
-    /**
-     * Call this at the beginning of each request (from parent thread)
-     * to initialize the underlying context so that {@link 
HystrixRequestVariableDefault} can be used on any children threads and be 
accessible from
-     * the parent thread.
-     */
-    public void setInitializeRequestContext(Boolean initializeRequestContext) {
-        this.initializeRequestContext = initializeRequestContext;
-    }
-
-    public String getGroupKey() {
-        return groupKey;
-    }
-
-    /**
-     * Specifies the group key to use
-     */
-    public void setGroupKey(String groupKey) {
-        this.groupKey = groupKey;
-    }
-
-    public String getCommandKey() {
-        return commandKey;
-    }
-
-    /**
-     * Used to identify a HystrixCommand instance for statistics, 
circuit-breaker, properties, etc.
-     * By default this will be derived from the instance class name.
-     */
-    public void setCommandKey(String commandKey) {
-        this.commandKey = commandKey;
-    }
-
-    public String getThreadPoolKey() {
-        return threadPoolKey;
-    }
-
-    /**
-     * Used to define which thread-pool this command should run in. By default 
this is derived from the HystrixCommandGroupKey.
-     */
-    public void setThreadPoolKey(String threadPoolKey) {
-        this.threadPoolKey = threadPoolKey;
-    }
-
-    public Integer getCoreSize() {
-        return coreSize;
-    }
-
-    /**
-     * This property sets the core thread-pool size. This is the maximum 
number of HystrixCommands that can execute concurrently.
-     */
-    public void setCoreSize(Integer coreSize) {
-        this.coreSize = coreSize;
-    }
-
-    public Integer getKeepAliveTime() {
-        return keepAliveTime;
-    }
-
-    /**
-     * This property sets the keep-alive time, in minutes.
-     */
-    public void setKeepAliveTime(Integer keepAliveTime) {
-        this.keepAliveTime = keepAliveTime;
-    }
-
-    public Integer getMaxQueueSize() {
-        return maxQueueSize;
-    }
-
-    /**
-     * This property sets the maximum queue size of the BlockingQueue 
implementation.
-     */
-    public void setMaxQueueSize(Integer maxQueueSize) {
-        this.maxQueueSize = maxQueueSize;
-    }
-
-    public Integer getQueueSizeRejectionThreshold() {
-        return queueSizeRejectionThreshold;
-    }
-
-    /**
-     * 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.
-     */
-    public void setQueueSizeRejectionThreshold(Integer 
queueSizeRejectionThreshold) {
-        this.queueSizeRejectionThreshold = queueSizeRejectionThreshold;
-    }
-
-    public Integer 
getThreadPoolMetricsRollingStatisticalWindowInMilliseconds() {
-        return threadPoolMetricsRollingStatisticalWindowInMilliseconds;
-    }
-
-    /**
-     * This property sets the duration of the statistical rolling window, in 
milliseconds. This is how long metrics are kept for the thread pool.
-     */
-    public void 
setThreadPoolMetricsRollingStatisticalWindowInMilliseconds(Integer 
threadPoolMetricsRollingStatisticalWindowInMilliseconds) {
-        this.threadPoolMetricsRollingStatisticalWindowInMilliseconds = 
threadPoolMetricsRollingStatisticalWindowInMilliseconds;
-    }
-
-    public Integer getThreadPoolMetricsRollingStatisticalWindowBuckets() {
-        return threadPoolMetricsRollingStatisticalWindowBuckets;
-    }
-
-    /**
-     * This property sets the number of buckets the rolling statistical window 
is divided into.
-     */
-    public void setThreadPoolMetricsRollingStatisticalWindowBuckets(Integer 
threadPoolMetricsRollingStatisticalWindowBuckets) {
-        this.threadPoolMetricsRollingStatisticalWindowBuckets = 
threadPoolMetricsRollingStatisticalWindowBuckets;
-    }
-
-    public Boolean getCircuitBreakerEnabled() {
-        return circuitBreakerEnabled;
-    }
-
-    /**
-     * Whether to use a {@link HystrixCircuitBreaker} or not. If false no 
circuit-breaker logic will be used and all requests permitted.
-     * <p>
-     * This is similar in effect to {@link 
#setCircuitBreakerForceClosed(Boolean)} except that continues tracking metrics 
and knowing whether it
-     * should be open/closed, this property results in not even instantiating 
a circuit-breaker.
-     */
-    public void setCircuitBreakerEnabled(Boolean circuitBreakerEnabled) {
-        this.circuitBreakerEnabled = circuitBreakerEnabled;
-    }
-
-    public Integer getCircuitBreakerErrorThresholdPercentage() {
-        return circuitBreakerErrorThresholdPercentage;
-    }
-
-    /**
-     * Error percentage threshold (as whole number such as 50) at which point 
the circuit breaker will trip open and reject requests.
-     * <p>
-     * It will stay tripped for the duration defined in {@link 
#getCircuitBreakerSleepWindowInMilliseconds()};
-     * <p>
-     * The error percentage this is compared against comes from {@link 
HystrixCommandMetrics#getHealthCounts()}.
-     */
-    public void setCircuitBreakerErrorThresholdPercentage(Integer 
circuitBreakerErrorThresholdPercentage) {
-        this.circuitBreakerErrorThresholdPercentage = 
circuitBreakerErrorThresholdPercentage;
-    }
-
-    public Boolean getCircuitBreakerForceClosed() {
-        return circuitBreakerForceClosed;
-    }
-
-    /**
-     * If true the {@link HystrixCircuitBreaker#allowRequest()} will always 
return true to allow requests regardless of the error percentage from {@link 
HystrixCommandMetrics#getHealthCounts()}.
-     * <p>
-     * The circuitBreakerForceOpen property takes precedence so if it set to 
true this property does nothing.
-     */
-    public void setCircuitBreakerForceClosed(Boolean 
circuitBreakerForceClosed) {
-        this.circuitBreakerForceClosed = circuitBreakerForceClosed;
-    }
-
-    public Boolean getCircuitBreakerForceOpen() {
-        return circuitBreakerForceOpen;
-    }
-
-    /**
-     * If true the {@link HystrixCircuitBreaker#allowRequest()} will always 
return false, causing the circuit to be open (tripped) and reject all requests.
-     * <p>
-     * This property takes precedence over circuitBreakerForceClosed
-     */
-    public void setCircuitBreakerForceOpen(Boolean circuitBreakerForceOpen) {
-        this.circuitBreakerForceOpen = circuitBreakerForceOpen;
-    }
-
-    public Integer getCircuitBreakerRequestVolumeThreshold() {
-        return circuitBreakerRequestVolumeThreshold;
-    }
-
-    /**
-     * Minimum number of requests in the {@link 
#setMetricsRollingStatisticalWindowInMilliseconds(Integer)} that must exist 
before the {@link HystrixCircuitBreaker} will trip.
-     * <p>
-     * If below this number the circuit will not trip regardless of error 
percentage.
-     */
-    public void setCircuitBreakerRequestVolumeThreshold(Integer 
circuitBreakerRequestVolumeThreshold) {
-        this.circuitBreakerRequestVolumeThreshold = 
circuitBreakerRequestVolumeThreshold;
-    }
-
-    public Integer getCircuitBreakerSleepWindowInMilliseconds() {
-        return circuitBreakerSleepWindowInMilliseconds;
-    }
-
-    /**
-     * The time in milliseconds after a {@link HystrixCircuitBreaker} trips 
open that it should wait before trying requests again.
-     */
-    public void setCircuitBreakerSleepWindowInMilliseconds(Integer 
circuitBreakerSleepWindowInMilliseconds) {
-        this.circuitBreakerSleepWindowInMilliseconds = 
circuitBreakerSleepWindowInMilliseconds;
-    }
-
-    public Integer getExecutionIsolationSemaphoreMaxConcurrentRequests() {
-        return executionIsolationSemaphoreMaxConcurrentRequests;
-    }
-
-    /**
-     * Number of concurrent requests permitted to {@link 
HystrixCommand#run()}. Requests beyond the concurrent limit will be rejected.
-     * <p>
-     * Applicable only when {@link #getExecutionIsolationStrategy()} == 
SEMAPHORE.
-     */
-    public void setExecutionIsolationSemaphoreMaxConcurrentRequests(Integer 
executionIsolationSemaphoreMaxConcurrentRequests) {
-        this.executionIsolationSemaphoreMaxConcurrentRequests = 
executionIsolationSemaphoreMaxConcurrentRequests;
-    }
-
-    public String getExecutionIsolationStrategy() {
-        return executionIsolationStrategy;
-    }
-
-    /**
-     * What isolation strategy {@link HystrixCommand#run()} will be executed 
with.
-     * <p>
-     * If THREAD then it will be executed on a separate thread and concurrent 
requests limited by the number of threads in the thread-pool.
-     * <p>
-     * If SEMAPHORE then it will be executed on the calling thread and 
concurrent requests limited by the semaphore count.
-     */
-    public void setExecutionIsolationStrategy(String 
executionIsolationStrategy) {
-        this.executionIsolationStrategy = executionIsolationStrategy;
-    }
-
-    public Boolean getExecutionIsolationThreadInterruptOnTimeout() {
-        return executionIsolationThreadInterruptOnTimeout;
-    }
-
-    /**
-     * Whether the execution thread should attempt an interrupt (using {@link 
Future#cancel}) when a thread times out.
-     * <p>
-     * Applicable only when executionIsolationStrategy == THREAD.
-     */
-    public void setExecutionIsolationThreadInterruptOnTimeout(Boolean 
executionIsolationThreadInterruptOnTimeout) {
-        this.executionIsolationThreadInterruptOnTimeout = 
executionIsolationThreadInterruptOnTimeout;
-    }
-
-    public Integer getExecutionTimeoutInMilliseconds() {
-        return executionTimeoutInMilliseconds;
-    }
-
-    /**
-     * Allow a dynamic override of the {@link HystrixThreadPoolKey} that will 
dynamically change which {@link HystrixThreadPool} a {@link HystrixCommand} 
executes on.
-     * <p>
-     * Typically this should return NULL which will cause it to use the {@link 
HystrixThreadPoolKey} injected into a {@link HystrixCommand} or derived from 
the {@link HystrixCommandGroupKey}.
-     * <p>
-     * When set the injected or derived values will be ignored and a new 
{@link HystrixThreadPool} created (if necessary) and the {@link HystrixCommand} 
will begin using the newly defined pool.
-     */
-    public void setExecutionTimeoutInMilliseconds(Integer 
executionTimeoutInMilliseconds) {
-        this.executionTimeoutInMilliseconds = executionTimeoutInMilliseconds;
-    }
-
-    public Boolean getExecutionTimeoutEnabled() {
-        return executionTimeoutEnabled;
-    }
-
-    /**
-     * Whether the timeout mechanism is enabled for this command
-     */
-    public void setExecutionTimeoutEnabled(Boolean executionTimeoutEnabled) {
-        this.executionTimeoutEnabled = executionTimeoutEnabled;
-    }
-
-    public Integer getFallbackIsolationSemaphoreMaxConcurrentRequests() {
-        return fallbackIsolationSemaphoreMaxConcurrentRequests;
-    }
-
-    /**
-     * Number of concurrent requests permitted to {@link 
HystrixCommand#getFallback()}. Requests beyond the concurrent limit will 
fail-fast and not attempt retrieving a fallback.
-     */
-    public void setFallbackIsolationSemaphoreMaxConcurrentRequests(Integer 
fallbackIsolationSemaphoreMaxConcurrentRequests) {
-        this.fallbackIsolationSemaphoreMaxConcurrentRequests = 
fallbackIsolationSemaphoreMaxConcurrentRequests;
-    }
-
-    public Boolean getFallbackEnabled() {
-        return fallbackEnabled;
-    }
-
-    /**
-     * Whether {@link HystrixCommand#getFallback()} should be attempted when 
failure occurs.
-     */
-    public void setFallbackEnabled(Boolean fallbackEnabled) {
-        this.fallbackEnabled = fallbackEnabled;
-    }
-
-    public Integer getMetricsHealthSnapshotIntervalInMilliseconds() {
-        return metricsHealthSnapshotIntervalInMilliseconds;
-    }
-
-    /**
-     * Time in milliseconds to wait between allowing health snapshots to be 
taken that calculate success and error percentages and affect {@link 
HystrixCircuitBreaker#isOpen()} status.
-     * <p>
-     * On high-volume circuits the continual calculation of error percentage 
can become CPU intensive thus this controls how often it is calculated.
-     */
-    public void setMetricsHealthSnapshotIntervalInMilliseconds(Integer 
metricsHealthSnapshotIntervalInMilliseconds) {
-        this.metricsHealthSnapshotIntervalInMilliseconds = 
metricsHealthSnapshotIntervalInMilliseconds;
-    }
-
-    public Integer getMetricsRollingPercentileBucketSize() {
-        return metricsRollingPercentileBucketSize;
-    }
-
-    /**
-     * Maximum number of values stored in each bucket of the rolling 
percentile. This is passed into {@link HystrixRollingPercentile} inside {@link 
HystrixCommandMetrics}.
-     */
-    public void setMetricsRollingPercentileBucketSize(Integer 
metricsRollingPercentileBucketSize) {
-        this.metricsRollingPercentileBucketSize = 
metricsRollingPercentileBucketSize;
-    }
-
-    public Boolean getMetricsRollingPercentileEnabled() {
-        return metricsRollingPercentileEnabled;
-    }
-
-    /**
-     * Whether percentile metrics should be captured using {@link 
HystrixRollingPercentile} inside {@link HystrixCommandMetrics}.
-     */
-    public void setMetricsRollingPercentileEnabled(Boolean 
metricsRollingPercentileEnabled) {
-        this.metricsRollingPercentileEnabled = metricsRollingPercentileEnabled;
-    }
-
-    /**
-     * Duration of percentile rolling window in milliseconds. This is passed 
into {@link HystrixRollingPercentile} inside {@link HystrixCommandMetrics}.
-     */
-    public Integer getMetricsRollingPercentileWindowInMilliseconds() {
-        return metricsRollingPercentileWindowInMilliseconds;
-    }
-
-    public void setMetricsRollingPercentileWindowInMilliseconds(Integer 
metricsRollingPercentileWindowInMilliseconds) {
-        this.metricsRollingPercentileWindowInMilliseconds = 
metricsRollingPercentileWindowInMilliseconds;
-    }
-
-    public Integer getMetricsRollingPercentileWindowBuckets() {
-        return metricsRollingPercentileWindowBuckets;
-    }
-
-    /**
-     * Number of buckets the rolling percentile window is broken into. This is 
passed into {@link HystrixRollingPercentile} inside {@link 
HystrixCommandMetrics}.
-     */
-    public void setMetricsRollingPercentileWindowBuckets(Integer 
metricsRollingPercentileWindowBuckets) {
-        this.metricsRollingPercentileWindowBuckets = 
metricsRollingPercentileWindowBuckets;
-    }
-
-    public Integer getMetricsRollingStatisticalWindowInMilliseconds() {
-        return metricsRollingStatisticalWindowInMilliseconds;
-    }
-
-    /**
-     * Duration of statistical rolling window in milliseconds. This is passed 
into {@link HystrixRollingNumber} inside {@link HystrixCommandMetrics}.
-     */
-    public void setMetricsRollingStatisticalWindowInMilliseconds(Integer 
metricsRollingStatisticalWindowInMilliseconds) {
-        this.metricsRollingStatisticalWindowInMilliseconds = 
metricsRollingStatisticalWindowInMilliseconds;
-    }
-
-    public Integer getMetricsRollingStatisticalWindowBuckets() {
-        return metricsRollingStatisticalWindowBuckets;
-    }
-
-    /**
-     * Number of buckets the rolling statistical window is broken into. This 
is passed into {@link HystrixRollingNumber} inside {@link 
HystrixCommandMetrics}.
-     */
-    public void setMetricsRollingStatisticalWindowBuckets(Integer 
metricsRollingStatisticalWindowBuckets) {
-        this.metricsRollingStatisticalWindowBuckets = 
metricsRollingStatisticalWindowBuckets;
-    }
-
-    public Boolean getRequestCacheEnabled() {
-        return requestCacheEnabled;
-    }
-
-    /**
-     * Whether {@link HystrixCommand#getCacheKey()} should be used with {@link 
HystrixRequestCache} to provide de-duplication functionality via request-scoped 
caching.
-     */
-    public void setRequestCacheEnabled(Boolean requestCacheEnabled) {
-        this.requestCacheEnabled = requestCacheEnabled;
-    }
-
-    public Boolean getRequestLogEnabled() {
-        return requestLogEnabled;
-    }
-
-    /**
-     * Whether {@link HystrixCommand} execution and events should be logged to 
{@link HystrixRequestLog}.
-     */
-    public void setRequestLogEnabled(Boolean requestLogEnabled) {
-        this.requestLogEnabled = requestLogEnabled;
-    }
-
-    public boolean isMetricsEnabled() {
-        return metricsEnabled;
-    }
-
-    /**
-     * Whether to include a number of headers with metrics details of the 
circuit breaker utilization
-     */
-    public void setMetricsEnabled(boolean metricsEnabled) {
-        this.metricsEnabled = metricsEnabled;
-    }
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/93f5952e/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/HystrixConstants.java
----------------------------------------------------------------------
diff --git 
a/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/HystrixConstants.java
 
b/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/HystrixConstants.java
deleted file mode 100644
index 55f3b9b..0000000
--- 
a/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/HystrixConstants.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.hystrix;
-
-public interface HystrixConstants {
-
-    // Hystrix EIP response properties
-    String HYSTRIX_RESPONSE_SUCCESSFUL_EXECUTION = 
"CamelHystrixSuccessfulExecution";
-    String HYSTRIX_RESPONSE_FROM_FALLBACK = "CamelHystrixResponseFromFallback";
-    String HYSTRIX_RESPONSE_SHORT_CIRCUITED = 
"CamelHystrixResponseShortCircuited";
-    String HYSTRIX_RESPONSE_TIMED_OUT = "CamelHystrixResponseTimedOut";
-    String HYSTRIX_RESPONSE_REJECTED = "CamelHystrixResponseRejected";
-
-    // in message header
-    String CAMEL_HYSTRIX_RUN_ENDPOINT = "CamelHystrixRunEndpoint";
-    String CAMEL_HYSTRIX_FALLBACK_ENDPOINT = "CamelHystrixFallbackEndpoint";
-    String CAMEL_HYSTRIX_CACHE_KEY = "CamelHystrixCacheKey";
-    String CAMEL_HYSTRIX_CLEAR_CACHE_FIRST = "CamelHystrixClearCacheFirst";
-    String CAMEL_HYSTRIX_REQUEST_CONTEXT = "CamelHystrixRequestContex";
-    String CAMEL_HYSTRIX_GROUP_KEY = "CamelHystrixGroupKey";
-    String CAMEL_HYSTRIX_COMMAND_KEY = "CamelHystrixCommandKey";
-    String CAMEL_HYSTRIX_THREAD_POOL_KEY = "CamelHystrixThreadPoolKey";
-    String CAMEL_HYSTRIX_CORE_SIZE = "CamelHystrixCoreSize";
-    String CAMEL_HYSTRIX_KEEP_ALIVE_TIME = "CamelHystrixKeepAliveTime";
-    String CAMEL_HYSTRIX_MAX_QUEUE_SIZE = "CamelHystrixMaxQueueSize";
-    String CAMEL_HYSTRIX_QUEUE_SIZE_REJECTION_THRESHOLD = 
"CamelHystrixQueueSizeRejectionThreshold";
-
-    String 
CAMEL_HYSTRIX_THREAD_POOL_METRICS_ROLLING_STATISTICAL_WINDOW_IN_MILLISECONDS = 
"CamelHystrixThreadPoolMetricsRollingStatisticalWindowInMilliseconds";
-    String CAMEL_HYSTRIX_THREAD_POOL_ROLLING_NUMBER_STATISTICAL_WINDOW_BUCKETS 
= "CamelHystrixThreadPoolRollingNumberStatisticalWindowBuckets";
-
-    String CAMEL_HYSTRIX_CIRCUIT_BREAKER_ENABLED = 
"CamelHystrixCircuitBreakerEnabled";
-    String CAMEL_HYSTRIX_CIRCUIT_BREAKER_ERROR_THRESHOLD_PERCENTAGE = 
"CamelHystrixCircuitBreakerErrorThresholdPercentage";
-    String CAMEL_HYSTRIX_CIRCUIT_BREAKER_FORCE_CLOSED = 
"CamelHystrixCircuitBreakerForceClosed";
-    String CAMEL_HYSTRIX_CIRCUIT_BREAKER_FORCE_OPEN = 
"CamelHystrixCircuitBreakerForceOpen";
-    String CAMEL_HYSTRIX_CIRCUIT_BREAKER_REQUEST_VOLUME_THRESHOLD = 
"CamelHystrixCircuitBreakerRequestVolumeThreshold";
-    String CAMEL_HYSTRIX_CIRCUIT_BREAKER_SLEEP_WINDOW_IN_MILLISECONDS = 
"CamelHystrixCircuitBreakerSleepWindowInMilliseconds";
-    String CAMEL_HYSTRIX_EXECUTION_ISOLATION_SEMAPHORE_MAX_CONCURRENT_REQUESTS 
= "CamelHystrixExecutionIsolationSemaphoreMaxConcurrentRequests";
-    String CAMEL_HYSTRIX_EXECUTION_ISOLATION_STRATEGY = 
"CamelHystrixExecutionIsolationStrategy";
-    String CAMEL_HYSTRIX_EXECUTION_ISOLATION_THREAD_INTERRUPTION_ON_TIMEOUT = 
"CamelHystrixExecutionIsolationThreadInterruptOnTimeout";
-    String CAMEL_HYSTRIX_EXECUTION_TIMEOUT_IN_MILLISECONDS = 
"CamelHystrixExecutionTimeoutInMilliseconds";
-    String CAMEL_HYSTRIX_EXECUTION_TIMEOUT_ENABLED = 
"CamelHystrixExecutionTimeoutEnabled";
-    String CAMEL_HYSTRIX_FALLBACK_ISOLATION_SEMAPHORE_MAX_CONCURRENT_REQUESTS 
= "CamelHystrixFallbackIsolationSemaphoreMaxConcurrentRequests";
-    String CAMEL_HYSTRIX_FALLBACK_ENABLED = "CamelHystrixFallbackEnabled";
-    String CAMEL_HYSTRIX_METRICS_HEALTH_SNAPSHOT_INTERVAL_IN_MILLISECONDS = 
"CamelHystrixMetricsHealthSnapshotIntervalInMilliseconds";
-    String CAMEL_HYSTRIX_METRICS_ROLLING_PERCENTILE_BUCKET_SIZE = 
"CamelHystrixMetricsRollingPercentileBucketSize";
-    String CAMEL_HYSTRIX_METRICS_ROLLING_PERCENTILE_ENABLED = 
"CamelHystrixMetricsRollingPercentileEnabled";
-    String CAMEL_HYSTRIX_METRICS_ROLLING_PERCENTILE_WINDOW_IN_MILLISECONDS = 
"CamelHystrixMetricsRollingPercentileWindowInMilliseconds";
-    String CAMEL_HYSTRIX_METRICS_ROLLING_PERCENTILE_WINDOW_BUCKETS = 
"CamelHystrixMetricsRollingPercentileWindowBuckets";
-    String CAMEL_HYSTRIX_METRICS_ROLLING_STATISTICAL_WINDOW_IN_MILLISECONDS = 
"CamelHystrixMetricsRollingStatisticalWindowInMilliseconds";
-    String CAMEL_HYSTRIX_METRICS_ROLLING_STATISTICAL_WINDOW_BUCKETS = 
"CamelHystrixMetricsRollingStatisticalWindowBuckets";
-    String CAMEL_HYSTRIX_REQUEST_CACHE_ENABLED = 
"CamelHystrixRequestCacheEnabled";
-    String CAMEL_HYSTRIX_REQUEST_LOG_ENABLED = "CamelHystrixRequestLogEnabled";
-
-    //out message headers
-    String CAMEL_HYSTRIX_COMMAND_METRICS_TOTAL_REQUESTS = 
"CamelHystrixCommandMetricsTotalRequests";
-    String CAMEL_HYSTRIX_COMMAND_METRICS_ERROR_COUNT = 
"CamelHystrixCommandMetricsErrorCount";
-    String CAMEL_HYSTRIX_COMMAND_METRICS_ERROR_PERCENTAGE = 
"CamelHystrixCommandMetricsErrorPercentage";
-    String CAMEL_HYSTRIX_COMMAND_METRICS_CURRENT_CONCURRENT_EXECUTION_COUNT = 
"CamelHystrixCommandMetricsCurrentConcurrentExecutionCount";
-    String CAMEL_HYSTRIX_COMMAND_METRICS_EXECUTION_TIME_MEAN = 
"CamelHystrixCommandMetricsExecutionTimeMean";
-    String CAMEL_HYSTRIX_COMMAND_METRICS_ROLLING_MAX_CONCURRENT_EXECUTIONS = 
"CamelHystrixCommandMetricsRollingMaxConcurrentExecutions";
-    String CAMEL_HYSTRIX_COMMAND_METRICS_TOTAL_TIME_MEAN = 
"CamelHystrixCommandMetricsTotalTimeMean";
-
-    String CAMEL_HYSTRIX_THREAD_POOL_METRICS_CURRENT_ACTIVE_COUNT = 
"CamelHystrixThreadPoolMetricsCurrentActiveCount";
-    String CAMEL_HYSTRIX_THREAD_POOL_METRICS_CUMULATIVE_COUNT_THREADS_EXECUTED 
= "CamelHystrixThreadPoolMetricsCumulativeCountThreadsExecuted";
-    String CAMEL_HYSTRIX_THREAD_POOL_METRICS_CURRENT_COMPLETED_TASK_COUNT = 
"CamelHystrixThreadPoolMetricsCurrentCompletedTaskCount";
-    String CAMEL_HYSTRIX_THREAD_POOL_METRICS_CURRENT_CORE_POOL_SIZE = 
"CamelHystrixThreadPoolMetricsCurrentCorePoolSize";
-    String CAMEL_HYSTRIX_THREAD_POOL_METRICS_CURRENT_LARGEST_POOL_SIZE = 
"CamelHystrixThreadPoolMetricsCurrentLargestPoolSize";
-    String CAMEL_HYSTRIX_THREAD_POOL_METRICS_CURRENT_MAXIMUM_POOL_SIZE = 
"CamelHystrixThreadPoolMetricsCurrentMaximumPoolSize";
-    String CAMEL_HYSTRIX_THREAD_POOL_METRICS_CURRENT_POOL_SIZE = 
"CamelHystrixThreadPoolMetricsCurrentPoolSize";
-    String CAMEL_HYSTRIX_THREAD_POOL_METRICS_CURRENT_QUEUE_SIZE = 
"CamelHystrixThreadPoolMetricsCurrentQueueSize";
-    String CAMEL_HYSTRIX_THREAD_POOL_METRICS_CURRENT_TASK_COUNT = 
"CamelHystrixThreadPoolMetricsCurrentTaskCount";
-    String CAMEL_HYSTRIX_THREAD_POOL_METRICS_ROLLING_COUNT_THREADS_EXECUTED = 
"CamelHystrixThreadPoolMetricsRollingCountThreadsExecuted";
-    String CAMEL_HYSTRIX_THREAD_POOL_METRICS_ROLLING_MAX_ACTIVE_THREADS = 
"CamelHystrixThreadPoolMetricsRollingMaxActiveThreads";
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/93f5952e/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/HystrixEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/HystrixEndpoint.java
 
b/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/HystrixEndpoint.java
deleted file mode 100644
index 2baa16c..0000000
--- 
a/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/HystrixEndpoint.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.hystrix;
-
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import com.netflix.hystrix.Hystrix;
-import com.netflix.hystrix.HystrixThreadPoolKey;
-import com.netflix.hystrix.strategy.HystrixPlugins;
-import com.netflix.hystrix.strategy.concurrency.HystrixConcurrencyStrategy;
-import com.netflix.hystrix.strategy.properties.HystrixProperty;
-import org.apache.camel.Consumer;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.impl.DefaultEndpoint;
-import org.apache.camel.spi.UriEndpoint;
-import org.apache.camel.spi.UriParam;
-
-/**
- * Represents a Hystrix endpoint.
- */
-@UriEndpoint(scheme = "hystrix", title = "Hystrix", syntax = 
"hystrix:groupKey", producerOnly = true, label = "scheduling,concurrency")
-public class HystrixEndpoint extends DefaultEndpoint {
-
-    @UriParam
-    private HystrixConfiguration configuration;
-
-    public HystrixEndpoint(String uri, HystrixComponent component, 
HystrixConfiguration configuration) {
-        super(uri, component);
-        this.configuration = configuration;
-    }
-
-    public Producer createProducer() throws Exception {
-        return new HystrixProducer(this, configuration);
-    }
-
-    public Consumer createConsumer(Processor processor) throws Exception {
-        throw new UnsupportedOperationException("Consumer not supported for 
Hystrix endpoint");
-    }
-
-    public boolean isSingleton() {
-        return true;
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        Hystrix.reset();
-        HystrixPlugins.getInstance().reset();
-        super.doStop();
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        HystrixPlugins.getInstance().registerConcurrencyStrategy(new 
HystrixConcurrencyStrategy() {
-
-            @Override
-            public ThreadPoolExecutor getThreadPool(final HystrixThreadPoolKey 
threadPoolKey,
-                                                    HystrixProperty<Integer> 
corePoolSize, HystrixProperty<Integer> maximumPoolSize,
-                                                    HystrixProperty<Integer> 
keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) {
-                return new ThreadPoolExecutor(corePoolSize.get(), 
maximumPoolSize.get(), keepAliveTime.get(), unit, workQueue, new 
ThreadFactory() {
-                    @Override
-                    public Thread newThread(Runnable r) {
-                        return 
getCamelContext().getExecutorServiceManager().newThread("camel-hystrix-" + 
threadPoolKey.name(), r);
-                    }
-                });
-            }
-        });
-
-        super.doStart();
-    }
-}
\ No newline at end of file

Reply via email to