You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2016/05/24 07:35:42 UTC

[2/2] camel git commit: CAMEL-9983: camel-hystrix - Lets removed the component now that we have the EIP

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 <da...@apache.org>
Authored: Tue May 24 09:33:37 2016 +0200
Committer: Claus Ibsen <da...@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 \u2014 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