This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch CAMEL-13691 in repository https://gitbox.apache.org/repos/asf/camel.git
commit 1960eee0552ba7025aa37518fa16f625ebc650f2 Author: Claus Ibsen <[email protected]> AuthorDate: Sun Nov 17 13:25:07 2019 +0100 CAMEL-13691: camel-resilience4j - WIP --- .../hystrix/processor/HystrixConstants.java | 7 ------- .../hystrix/processor/HystrixProcessor.java | 11 ++++++----- .../BlueprintHystrixRouteFallbackTest.java | 5 +++-- .../processor/BlueprintHystrixRouteOkTest.java | 5 +++-- .../processor/HystrixBadRequestExceptionTest.java | 5 +++-- .../hystrix/processor/HystrixCircuitOpenTest.java | 12 +++++------- .../processor/HystrixRouteFallbackTest.java | 5 +++-- .../HystrixRouteFallbackViaNetworkTest.java | 5 +++-- .../hystrix/processor/HystrixRouteOkTest.java | 5 +++-- .../processor/SpringHystrixRouteFallbackTest.java | 5 +++-- .../processor/SpringHystrixRouteOkTest.java | 5 +++-- components/camel-resilience4j/pom.xml | 22 +++++++++++++++++++--- .../resilience4j/ResilienceProcessor.java | 2 +- .../BlueprintResilienceRouteFallbackTest.java | 1 + .../BlueprintResilienceRouteOkTest.java | 1 + .../ResilienceRouteBulkheadFallbackTest.java | 1 + .../ResilienceRouteBulkheadOkTest.java | 1 + .../resilience4j/ResilienceRouteFallbackTest.java | 1 + .../resilience4j/ResilienceRouteOkTest.java | 1 + .../SpringResilienceRouteFallbackTest.java | 1 + .../resilience4j/SpringResilienceRouteOkTest.java | 1 + .../apache/camel/spi}/CircuitBreakerConstants.java | 4 +--- parent/pom.xml | 2 ++ .../karaf/features/src/main/resources/features.xml | 11 +++++++++++ .../apache/camel/itest/karaf/CamelHystrixTest.java | 20 ++++++++++++-------- .../camel/itest/karaf/CamelResilience4jTest.java | 22 ++++++++++++++-------- 26 files changed, 103 insertions(+), 58 deletions(-) diff --git a/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/processor/HystrixConstants.java b/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/processor/HystrixConstants.java index e9bcdfd..06fbb59 100644 --- a/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/processor/HystrixConstants.java +++ b/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/processor/HystrixConstants.java @@ -19,11 +19,4 @@ package org.apache.camel.component.hystrix.processor; public interface HystrixConstants { String DEFAULT_HYSTRIX_CONFIGURATION_ID = "hystrix-configuration"; - // 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"; - } diff --git a/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/processor/HystrixProcessor.java b/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/processor/HystrixProcessor.java index b4c78cf..49c2425 100644 --- a/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/processor/HystrixProcessor.java +++ b/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/processor/HystrixProcessor.java @@ -30,6 +30,7 @@ import org.apache.camel.Navigate; import org.apache.camel.Processor; import org.apache.camel.api.management.ManagedAttribute; import org.apache.camel.api.management.ManagedResource; +import org.apache.camel.spi.CircuitBreakerConstants; import org.apache.camel.spi.IdAware; import org.apache.camel.support.AsyncProcessorSupport; @@ -208,11 +209,11 @@ public class HystrixProcessor extends AsyncProcessorSupport implements Navigate< } private void commandResponse(Exchange exchange, HystrixCommand command) { - exchange.setProperty(HystrixConstants.HYSTRIX_RESPONSE_SUCCESSFUL_EXECUTION, command.isSuccessfulExecution()); - exchange.setProperty(HystrixConstants.HYSTRIX_RESPONSE_FROM_FALLBACK, command.isResponseFromFallback()); - exchange.setProperty(HystrixConstants.HYSTRIX_RESPONSE_SHORT_CIRCUITED, command.isResponseShortCircuited()); - exchange.setProperty(HystrixConstants.HYSTRIX_RESPONSE_TIMED_OUT, command.isResponseTimedOut()); - exchange.setProperty(HystrixConstants.HYSTRIX_RESPONSE_REJECTED, command.isResponseRejected()); + exchange.setProperty(CircuitBreakerConstants.RESPONSE_SUCCESSFUL_EXECUTION, command.isSuccessfulExecution()); + exchange.setProperty(CircuitBreakerConstants.RESPONSE_FROM_FALLBACK, command.isResponseFromFallback()); + exchange.setProperty(CircuitBreakerConstants.RESPONSE_SHORT_CIRCUITED, command.isResponseShortCircuited()); + exchange.setProperty(CircuitBreakerConstants.RESPONSE_TIMED_OUT, command.isResponseTimedOut()); + exchange.setProperty(CircuitBreakerConstants.RESPONSE_REJECTED, command.isResponseRejected()); } @Override diff --git a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/BlueprintHystrixRouteFallbackTest.java b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/BlueprintHystrixRouteFallbackTest.java index 60f192a..05de4ff 100644 --- a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/BlueprintHystrixRouteFallbackTest.java +++ b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/BlueprintHystrixRouteFallbackTest.java @@ -16,6 +16,7 @@ */ package org.apache.camel.component.hystrix.processor; +import org.apache.camel.spi.CircuitBreakerConstants; import org.apache.camel.test.blueprint.CamelBlueprintTestSupport; import org.junit.Test; @@ -29,8 +30,8 @@ public class BlueprintHystrixRouteFallbackTest extends CamelBlueprintTestSupport @Test public void testHystrix() throws Exception { getMockEndpoint("mock:result").expectedBodiesReceived("Fallback message"); - getMockEndpoint("mock:result").expectedPropertyReceived(HystrixConstants.HYSTRIX_RESPONSE_SUCCESSFUL_EXECUTION, false); - getMockEndpoint("mock:result").expectedPropertyReceived(HystrixConstants.HYSTRIX_RESPONSE_FROM_FALLBACK, true); + getMockEndpoint("mock:result").expectedPropertyReceived(CircuitBreakerConstants.RESPONSE_SUCCESSFUL_EXECUTION, false); + getMockEndpoint("mock:result").expectedPropertyReceived(CircuitBreakerConstants.RESPONSE_FROM_FALLBACK, true); template.sendBody("direct:start", "Hello World"); diff --git a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/BlueprintHystrixRouteOkTest.java b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/BlueprintHystrixRouteOkTest.java index 16a1ddd..e6333b2 100644 --- a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/BlueprintHystrixRouteOkTest.java +++ b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/BlueprintHystrixRouteOkTest.java @@ -16,6 +16,7 @@ */ package org.apache.camel.component.hystrix.processor; +import org.apache.camel.spi.CircuitBreakerConstants; import org.apache.camel.test.blueprint.CamelBlueprintTestSupport; import org.junit.Test; @@ -29,8 +30,8 @@ public class BlueprintHystrixRouteOkTest extends CamelBlueprintTestSupport { @Test public void testHystrix() throws Exception { getMockEndpoint("mock:result").expectedBodiesReceived("Bye World"); - getMockEndpoint("mock:result").expectedPropertyReceived(HystrixConstants.HYSTRIX_RESPONSE_SUCCESSFUL_EXECUTION, true); - getMockEndpoint("mock:result").expectedPropertyReceived(HystrixConstants.HYSTRIX_RESPONSE_FROM_FALLBACK, false); + getMockEndpoint("mock:result").expectedPropertyReceived(CircuitBreakerConstants.RESPONSE_SUCCESSFUL_EXECUTION, true); + getMockEndpoint("mock:result").expectedPropertyReceived(CircuitBreakerConstants.RESPONSE_FROM_FALLBACK, false); template.sendBody("direct:start", "Hello World"); diff --git a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixBadRequestExceptionTest.java b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixBadRequestExceptionTest.java index fc5abaf..fb37a4b 100644 --- a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixBadRequestExceptionTest.java +++ b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixBadRequestExceptionTest.java @@ -19,6 +19,7 @@ package org.apache.camel.component.hystrix.processor; import com.netflix.hystrix.exception.HystrixBadRequestException; import org.apache.camel.Exchange; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.spi.CircuitBreakerConstants; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test; @@ -31,8 +32,8 @@ public class HystrixBadRequestExceptionTest extends CamelTestSupport { Exchange out = template.send("direct:start", e -> e.getMessage().setBody("Hello World")); assertTrue(out.isFailed()); - assertFalse(out.getProperty(HystrixConstants.HYSTRIX_RESPONSE_SUCCESSFUL_EXECUTION, boolean.class)); - assertFalse(out.getProperty(HystrixConstants.HYSTRIX_RESPONSE_FROM_FALLBACK, boolean.class)); + assertFalse(out.getProperty(CircuitBreakerConstants.RESPONSE_SUCCESSFUL_EXECUTION, boolean.class)); + assertFalse(out.getProperty(CircuitBreakerConstants.RESPONSE_FROM_FALLBACK, boolean.class)); assertTrue(out.getException() instanceof HystrixBadRequestException); assertMockEndpointsSatisfied(); diff --git a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixCircuitOpenTest.java b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixCircuitOpenTest.java index c362f76..2b793cc 100644 --- a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixCircuitOpenTest.java +++ b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixCircuitOpenTest.java @@ -23,14 +23,12 @@ import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.RoutesBuilder; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.spi.CircuitBreakerConstants; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import static org.apache.camel.component.hystrix.processor.HystrixConstants.HYSTRIX_RESPONSE_SHORT_CIRCUITED; -import static org.apache.camel.component.hystrix.processor.HystrixConstants.HYSTRIX_RESPONSE_SUCCESSFUL_EXECUTION; - public class HystrixCircuitOpenTest extends CamelTestSupport { public static final Integer REQUEST_VOLUME_THRESHOLD = 4; private static final Logger LOG = LoggerFactory.getLogger(HystrixCircuitOpenTest.class); @@ -54,7 +52,7 @@ public class HystrixCircuitOpenTest extends CamelTestSupport { resetMocks(); // notice this can be flaky due timing when using thread sleeps in unit tests - getMockEndpoint("mock:result").expectedPropertyReceived(HYSTRIX_RESPONSE_SHORT_CIRCUITED, true); + getMockEndpoint("mock:result").expectedPropertyReceived(CircuitBreakerConstants.RESPONSE_SHORT_CIRCUITED, true); route.throwException = false; try { @@ -80,8 +78,8 @@ public class HystrixCircuitOpenTest extends CamelTestSupport { resetMocks(); - getMockEndpoint("mock:result").expectedPropertyReceived(HYSTRIX_RESPONSE_SHORT_CIRCUITED, false); - getMockEndpoint("mock:result").expectedPropertyReceived(HYSTRIX_RESPONSE_SUCCESSFUL_EXECUTION, true); + getMockEndpoint("mock:result").expectedPropertyReceived(CircuitBreakerConstants.RESPONSE_SHORT_CIRCUITED, false); + getMockEndpoint("mock:result").expectedPropertyReceived(CircuitBreakerConstants.RESPONSE_SUCCESSFUL_EXECUTION, true); template.requestBody("direct:start", "Request Body"); @@ -120,7 +118,7 @@ public class HystrixCircuitOpenTest extends CamelTestSupport { }) .log("Hystrix processing end: ${threadName}") .end() - .log(HYSTRIX_RESPONSE_SHORT_CIRCUITED + " = ${exchangeProperty." + HYSTRIX_RESPONSE_SHORT_CIRCUITED + "}") + .log(CircuitBreakerConstants.RESPONSE_SHORT_CIRCUITED + " = ${exchangeProperty." + CircuitBreakerConstants.RESPONSE_SHORT_CIRCUITED + "}") .to("mock:result"); } } diff --git a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixRouteFallbackTest.java b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixRouteFallbackTest.java index ee97733..04fcb0b 100644 --- a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixRouteFallbackTest.java +++ b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixRouteFallbackTest.java @@ -17,6 +17,7 @@ package org.apache.camel.component.hystrix.processor; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.spi.CircuitBreakerConstants; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test; @@ -25,8 +26,8 @@ public class HystrixRouteFallbackTest extends CamelTestSupport { @Test public void testHystrix() throws Exception { getMockEndpoint("mock:result").expectedBodiesReceived("Fallback message"); - getMockEndpoint("mock:result").expectedPropertyReceived(HystrixConstants.HYSTRIX_RESPONSE_SUCCESSFUL_EXECUTION, false); - getMockEndpoint("mock:result").expectedPropertyReceived(HystrixConstants.HYSTRIX_RESPONSE_FROM_FALLBACK, true); + getMockEndpoint("mock:result").expectedPropertyReceived(CircuitBreakerConstants.RESPONSE_SUCCESSFUL_EXECUTION, false); + getMockEndpoint("mock:result").expectedPropertyReceived(CircuitBreakerConstants.RESPONSE_FROM_FALLBACK, true); template.sendBody("direct:start", "Hello World"); diff --git a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixRouteFallbackViaNetworkTest.java b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixRouteFallbackViaNetworkTest.java index 7a5e683..7040ce4 100644 --- a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixRouteFallbackViaNetworkTest.java +++ b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixRouteFallbackViaNetworkTest.java @@ -17,6 +17,7 @@ package org.apache.camel.component.hystrix.processor; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.spi.CircuitBreakerConstants; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test; @@ -25,8 +26,8 @@ public class HystrixRouteFallbackViaNetworkTest extends CamelTestSupport { @Test public void testHystrix() throws Exception { getMockEndpoint("mock:result").expectedBodiesReceived("Fallback message"); - getMockEndpoint("mock:result").expectedPropertyReceived(HystrixConstants.HYSTRIX_RESPONSE_SUCCESSFUL_EXECUTION, false); - getMockEndpoint("mock:result").expectedPropertyReceived(HystrixConstants.HYSTRIX_RESPONSE_FROM_FALLBACK, true); + getMockEndpoint("mock:result").expectedPropertyReceived(CircuitBreakerConstants.RESPONSE_SUCCESSFUL_EXECUTION, false); + getMockEndpoint("mock:result").expectedPropertyReceived(CircuitBreakerConstants.RESPONSE_FROM_FALLBACK, true); template.sendBody("direct:start", "Hello World"); diff --git a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixRouteOkTest.java b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixRouteOkTest.java index e7faf1c..19a7f88 100644 --- a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixRouteOkTest.java +++ b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/HystrixRouteOkTest.java @@ -17,6 +17,7 @@ package org.apache.camel.component.hystrix.processor; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.spi.CircuitBreakerConstants; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test; @@ -25,8 +26,8 @@ public class HystrixRouteOkTest extends CamelTestSupport { @Test public void testHystrix() throws Exception { getMockEndpoint("mock:result").expectedBodiesReceived("Bye World"); - getMockEndpoint("mock:result").expectedPropertyReceived(HystrixConstants.HYSTRIX_RESPONSE_SUCCESSFUL_EXECUTION, true); - getMockEndpoint("mock:result").expectedPropertyReceived(HystrixConstants.HYSTRIX_RESPONSE_FROM_FALLBACK, false); + getMockEndpoint("mock:result").expectedPropertyReceived(CircuitBreakerConstants.RESPONSE_SUCCESSFUL_EXECUTION, true); + getMockEndpoint("mock:result").expectedPropertyReceived(CircuitBreakerConstants.RESPONSE_FROM_FALLBACK, false); template.sendBody("direct:start", "Hello World"); diff --git a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/SpringHystrixRouteFallbackTest.java b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/SpringHystrixRouteFallbackTest.java index b42d2cc..93346ef 100644 --- a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/SpringHystrixRouteFallbackTest.java +++ b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/SpringHystrixRouteFallbackTest.java @@ -16,6 +16,7 @@ */ package org.apache.camel.component.hystrix.processor; +import org.apache.camel.spi.CircuitBreakerConstants; import org.apache.camel.test.spring.CamelSpringTestSupport; import org.junit.Test; import org.springframework.context.support.AbstractApplicationContext; @@ -33,8 +34,8 @@ public class SpringHystrixRouteFallbackTest extends CamelSpringTestSupport { @Test public void testHystrix() throws Exception { getMockEndpoint("mock:result").expectedBodiesReceived("Fallback message"); - getMockEndpoint("mock:result").expectedPropertyReceived(HystrixConstants.HYSTRIX_RESPONSE_SUCCESSFUL_EXECUTION, false); - getMockEndpoint("mock:result").expectedPropertyReceived(HystrixConstants.HYSTRIX_RESPONSE_FROM_FALLBACK, true); + getMockEndpoint("mock:result").expectedPropertyReceived(CircuitBreakerConstants.RESPONSE_SUCCESSFUL_EXECUTION, false); + getMockEndpoint("mock:result").expectedPropertyReceived(CircuitBreakerConstants.RESPONSE_FROM_FALLBACK, true); template.sendBody("direct:start", "Hello World"); diff --git a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/SpringHystrixRouteOkTest.java b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/SpringHystrixRouteOkTest.java index 8e41820..c685dcf 100644 --- a/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/SpringHystrixRouteOkTest.java +++ b/components/camel-hystrix/src/test/java/org/apache/camel/component/hystrix/processor/SpringHystrixRouteOkTest.java @@ -16,6 +16,7 @@ */ package org.apache.camel.component.hystrix.processor; +import org.apache.camel.spi.CircuitBreakerConstants; import org.apache.camel.test.spring.CamelSpringTestSupport; import org.junit.Test; import org.springframework.context.support.AbstractApplicationContext; @@ -33,8 +34,8 @@ public class SpringHystrixRouteOkTest extends CamelSpringTestSupport { @Test public void testHystrix() throws Exception { getMockEndpoint("mock:result").expectedBodiesReceived("Bye World"); - getMockEndpoint("mock:result").expectedPropertyReceived(HystrixConstants.HYSTRIX_RESPONSE_SUCCESSFUL_EXECUTION, true); - getMockEndpoint("mock:result").expectedPropertyReceived(HystrixConstants.HYSTRIX_RESPONSE_FROM_FALLBACK, false); + getMockEndpoint("mock:result").expectedPropertyReceived(CircuitBreakerConstants.RESPONSE_SUCCESSFUL_EXECUTION, true); + getMockEndpoint("mock:result").expectedPropertyReceived(CircuitBreakerConstants.RESPONSE_FROM_FALLBACK, false); template.sendBody("direct:start", "Hello World"); diff --git a/components/camel-resilience4j/pom.xml b/components/camel-resilience4j/pom.xml index 71f185f..a8e941e 100644 --- a/components/camel-resilience4j/pom.xml +++ b/components/camel-resilience4j/pom.xml @@ -48,17 +48,33 @@ <dependency> <groupId>io.github.resilience4j</groupId> <artifactId>resilience4j-circuitbreaker</artifactId> - <version>1.1.0</version> + <version>${resilience4j-version}</version> + <exclusions> + <exclusion> + <groupId>io.vavr</groupId> + <artifactId>vavr</artifactId> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>io.github.resilience4j</groupId> <artifactId>resilience4j-bulkhead</artifactId> - <version>1.1.0</version> + <version>${resilience4j-version}</version> </dependency> <dependency> <groupId>io.github.resilience4j</groupId> <artifactId>resilience4j-timelimiter</artifactId> - <version>1.1.0</version> + <version>${resilience4j-version}</version> + </dependency> + <dependency> + <groupId>io.vavr</groupId> + <artifactId>vavr</artifactId> + <version>${vavr-version}</version> + </dependency> + <dependency> + <groupId>io.vavr</groupId> + <artifactId>vavr-match</artifactId> + <version>${vavr-version}</version> </dependency> <!-- for testing --> diff --git a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceProcessor.java b/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceProcessor.java index 1f6dbe3..c936a9e 100644 --- a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceProcessor.java +++ b/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceProcessor.java @@ -21,7 +21,6 @@ import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; -import java.util.concurrent.Future; import java.util.concurrent.TimeoutException; import java.util.function.Function; import java.util.function.Supplier; @@ -44,6 +43,7 @@ import org.apache.camel.RuntimeExchangeException; import org.apache.camel.api.management.ManagedAttribute; import org.apache.camel.api.management.ManagedOperation; import org.apache.camel.api.management.ManagedResource; +import org.apache.camel.spi.CircuitBreakerConstants; import org.apache.camel.spi.IdAware; import org.apache.camel.support.AsyncProcessorSupport; import org.apache.camel.support.ExchangeHelper; diff --git a/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/BlueprintResilienceRouteFallbackTest.java b/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/BlueprintResilienceRouteFallbackTest.java index 0dac4de..8a9bf1b 100644 --- a/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/BlueprintResilienceRouteFallbackTest.java +++ b/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/BlueprintResilienceRouteFallbackTest.java @@ -16,6 +16,7 @@ */ package org.apache.camel.component.resilience4j; +import org.apache.camel.spi.CircuitBreakerConstants; import org.apache.camel.test.blueprint.CamelBlueprintTestSupport; import org.junit.Test; diff --git a/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/BlueprintResilienceRouteOkTest.java b/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/BlueprintResilienceRouteOkTest.java index 5f064b3..62f71f9 100644 --- a/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/BlueprintResilienceRouteOkTest.java +++ b/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/BlueprintResilienceRouteOkTest.java @@ -16,6 +16,7 @@ */ package org.apache.camel.component.resilience4j; +import org.apache.camel.spi.CircuitBreakerConstants; import org.apache.camel.test.blueprint.CamelBlueprintTestSupport; import org.junit.Test; diff --git a/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResilienceRouteBulkheadFallbackTest.java b/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResilienceRouteBulkheadFallbackTest.java index 69833b9..8591c36 100644 --- a/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResilienceRouteBulkheadFallbackTest.java +++ b/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResilienceRouteBulkheadFallbackTest.java @@ -17,6 +17,7 @@ package org.apache.camel.component.resilience4j; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.spi.CircuitBreakerConstants; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test; diff --git a/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResilienceRouteBulkheadOkTest.java b/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResilienceRouteBulkheadOkTest.java index 3368884..d85c463 100644 --- a/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResilienceRouteBulkheadOkTest.java +++ b/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResilienceRouteBulkheadOkTest.java @@ -17,6 +17,7 @@ package org.apache.camel.component.resilience4j; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.spi.CircuitBreakerConstants; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test; diff --git a/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResilienceRouteFallbackTest.java b/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResilienceRouteFallbackTest.java index 6ae5c36..b3bb081 100644 --- a/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResilienceRouteFallbackTest.java +++ b/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResilienceRouteFallbackTest.java @@ -17,6 +17,7 @@ package org.apache.camel.component.resilience4j; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.spi.CircuitBreakerConstants; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test; diff --git a/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResilienceRouteOkTest.java b/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResilienceRouteOkTest.java index 891d504..dc1d23d 100644 --- a/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResilienceRouteOkTest.java +++ b/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/ResilienceRouteOkTest.java @@ -17,6 +17,7 @@ package org.apache.camel.component.resilience4j; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.spi.CircuitBreakerConstants; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test; diff --git a/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/SpringResilienceRouteFallbackTest.java b/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/SpringResilienceRouteFallbackTest.java index 12792ad..53bff6c 100644 --- a/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/SpringResilienceRouteFallbackTest.java +++ b/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/SpringResilienceRouteFallbackTest.java @@ -16,6 +16,7 @@ */ package org.apache.camel.component.resilience4j; +import org.apache.camel.spi.CircuitBreakerConstants; import org.apache.camel.test.spring.CamelSpringTestSupport; import org.junit.Test; import org.springframework.context.support.AbstractApplicationContext; diff --git a/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/SpringResilienceRouteOkTest.java b/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/SpringResilienceRouteOkTest.java index c305804..07313b3 100644 --- a/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/SpringResilienceRouteOkTest.java +++ b/components/camel-resilience4j/src/test/java/org/apache/camel/component/resilience4j/SpringResilienceRouteOkTest.java @@ -16,6 +16,7 @@ */ package org.apache.camel.component.resilience4j; +import org.apache.camel.spi.CircuitBreakerConstants; import org.apache.camel.test.spring.CamelSpringTestSupport; import org.junit.Test; import org.springframework.context.support.AbstractApplicationContext; diff --git a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/CircuitBreakerConstants.java b/core/camel-api/src/main/java/org/apache/camel/spi/CircuitBreakerConstants.java similarity index 90% copy from components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/CircuitBreakerConstants.java copy to core/camel-api/src/main/java/org/apache/camel/spi/CircuitBreakerConstants.java index 0dcbb0c..dbaf377 100644 --- a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/CircuitBreakerConstants.java +++ b/core/camel-api/src/main/java/org/apache/camel/spi/CircuitBreakerConstants.java @@ -14,9 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.component.resilience4j; - -// TODO: Make these as generic constants so we can use it for hystrix and resilience4j +package org.apache.camel.spi; public interface CircuitBreakerConstants { diff --git a/parent/pom.xml b/parent/pom.xml index 4c02d65..78fb184 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -540,6 +540,7 @@ <reflections-bundle-version>0.9.11_1</reflections-bundle-version> <regexp-bundle-version>1.4_1</regexp-bundle-version> <rescu-version>2.0.2</rescu-version> + <resilience4j-version>1.1.0</resilience4j-version> <rest-assured-version>4.1.2</rest-assured-version> <revapi-java-version>0.20.0</revapi-java-version> <revapi-maven-plugin-version>0.11.2</revapi-maven-plugin-version> @@ -635,6 +636,7 @@ <unix-socket-factory-bundle-version>1.0.0</unix-socket-factory-bundle-version> <validation-1-api-version>1.1.0.Final</validation-1-api-version> <validation-api-version>2.0.1.Final</validation-api-version> + <vavr-version>0.10.2</vavr-version> <velocity-bundle-version>1.7_6</velocity-bundle-version> <velocity-tools-version>2.0</velocity-tools-version> <velocity-version>2.0</velocity-version> diff --git a/platforms/karaf/features/src/main/resources/features.xml b/platforms/karaf/features/src/main/resources/features.xml index 2952094..759dacc 100644 --- a/platforms/karaf/features/src/main/resources/features.xml +++ b/platforms/karaf/features/src/main/resources/features.xml @@ -2067,6 +2067,17 @@ <bundle dependency='true'>wrap:mvn:io.micrometer/micrometer-core/${micrometer-version}</bundle> <bundle>mvn:org.apache.camel/camel-reactor/${project.version}</bundle> </feature> + <!-- does not work in OSGi: https://github.com/resilience4j/resilience4j/issues/750 + <feature name='camel-resilience4j' version='${project.version}' start-level='50'> + <feature version='${project.version}'>camel-core</feature> + <bundle dependency='true'>mvn:io.github.resilience4j/resilience4j-core/${resilience4j-version}</bundle> + <bundle dependency='true'>mvn:io.github.resilience4j/resilience4j-circuitbreaker/${resilience4j-version}</bundle> + <bundle dependency='true'>mvn:io.github.resilience4j/resilience4j-bulkhead/${resilience4j-version}</bundle> + <bundle dependency='true'>mvn:io.github.resilience4j/resilience4j-timelimiter/${resilience4j-version}</bundle> + <bundle dependency='true'>mvn:io.vavr/vavr/${vavr-version}</bundle> + <bundle dependency='true'>mvn:io.vavr/vavr-match/${vavr-version}</bundle> + <bundle>mvn:org.apache.camel/camel-resilience4j/${project.version}</bundle> + </feature> --> <feature name='camel-rest-swagger' version='${project.version}' start-level='50'> <feature version='${project.version}'>camel-core</feature> <bundle dependency='true'>mvn:org.yaml/snakeyaml/${snakeyaml-version}</bundle> diff --git a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/CircuitBreakerConstants.java b/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelHystrixTest.java similarity index 58% copy from components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/CircuitBreakerConstants.java copy to tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelHystrixTest.java index 0dcbb0c..79f8a50 100644 --- a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/CircuitBreakerConstants.java +++ b/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelHystrixTest.java @@ -14,16 +14,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.component.resilience4j; +package org.apache.camel.itest.karaf; -// TODO: Make these as generic constants so we can use it for hystrix and resilience4j +import org.junit.Test; +import org.junit.runner.RunWith; +import org.ops4j.pax.exam.junit.PaxExam; -public interface CircuitBreakerConstants { +@RunWith(PaxExam.class) +public class CamelHystrixTest extends BaseKarafTest { - String RESPONSE_SUCCESSFUL_EXECUTION = "CamelCircuitBreakerSuccessfulExecution"; - String RESPONSE_FROM_FALLBACK = "CamelCircuitBreakerResponseFromFallback"; - String RESPONSE_SHORT_CIRCUITED = "CamelCircuitBreakerResponseShortCircuited"; - String RESPONSE_TIMED_OUT = "CamelCircuitBreakerResponseTimedOut"; - String RESPONSE_REJECTED = "CamelCircuitBreakerResponseRejected"; + public static final String COMPONENT = extractName(CamelHystrixTest.class); + + @Test + public void test() throws Exception { + installCamelFeature(COMPONENT); + } } diff --git a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/CircuitBreakerConstants.java b/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelResilience4jTest.java similarity index 58% rename from components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/CircuitBreakerConstants.java rename to tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelResilience4jTest.java index 0dcbb0c..d641fc7 100644 --- a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/CircuitBreakerConstants.java +++ b/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelResilience4jTest.java @@ -14,16 +14,22 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.component.resilience4j; +package org.apache.camel.itest.karaf; -// TODO: Make these as generic constants so we can use it for hystrix and resilience4j +import org.junit.Ignore; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.ops4j.pax.exam.junit.PaxExam; -public interface CircuitBreakerConstants { +@RunWith(PaxExam.class) +@Ignore("Does not work in OSGi") +public class CamelResilience4jTest extends BaseKarafTest { - String RESPONSE_SUCCESSFUL_EXECUTION = "CamelCircuitBreakerSuccessfulExecution"; - String RESPONSE_FROM_FALLBACK = "CamelCircuitBreakerResponseFromFallback"; - String RESPONSE_SHORT_CIRCUITED = "CamelCircuitBreakerResponseShortCircuited"; - String RESPONSE_TIMED_OUT = "CamelCircuitBreakerResponseTimedOut"; - String RESPONSE_REJECTED = "CamelCircuitBreakerResponseRejected"; + public static final String COMPONENT = extractName(CamelResilience4jTest.class); + + @Test + public void test() throws Exception { + installCamelFeature(COMPONENT); + } }
