This is an automated email from the ASF dual-hosted git repository. github-bot pushed a commit to branch camel-main in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit edd0369aff66274e88a105c7824fda525ecd636c Author: James Netherton <jamesnether...@gmail.com> AuthorDate: Tue Apr 29 08:36:33 2025 +0100 Adapt to Camel switching to SmallRye Fault Tolerance programmatic APIs --- .../microprofile-fault-tolerance/runtime/pom.xml | 4 ++ .../MicroProfileFaultToleranceRoutes.java | 2 +- .../MicroprofileFaultToleranceProducers.java | 50 +++++----------------- .../MicroprofileFaultToleranceResource.java | 17 ++++---- ...icroProfileFaultToleranceConfigurationTest.java | 2 +- ...fileFaultToleranceConfigurationTestProfile.java | 4 +- pom.xml | 1 + poms/bom/pom.xml | 11 +++++ poms/bom/src/main/generated/flattened-full-pom.xml | 11 +++++ .../src/main/generated/flattened-reduced-pom.xml | 11 +++++ .../generated/flattened-reduced-verbose-pom.xml | 11 +++++ 11 files changed, 72 insertions(+), 52 deletions(-) diff --git a/extensions/microprofile-fault-tolerance/runtime/pom.xml b/extensions/microprofile-fault-tolerance/runtime/pom.xml index 13613102c0..04fee06a0f 100644 --- a/extensions/microprofile-fault-tolerance/runtime/pom.xml +++ b/extensions/microprofile-fault-tolerance/runtime/pom.xml @@ -40,6 +40,10 @@ <groupId>io.quarkus</groupId> <artifactId>quarkus-smallrye-fault-tolerance</artifactId> </dependency> + <dependency> + <groupId>io.smallrye</groupId> + <artifactId>smallrye-fault-tolerance-standalone</artifactId> + </dependency> <dependency> <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-core</artifactId> diff --git a/integration-tests/microprofile-fault-tolerance/src/main/java/org/apache/camel/quarkus/component/microprofile/it/faulttolerance/MicroProfileFaultToleranceRoutes.java b/integration-tests/microprofile-fault-tolerance/src/main/java/org/apache/camel/quarkus/component/microprofile/it/faulttolerance/MicroProfileFaultToleranceRoutes.java index 267fa2ea24..ec9dd5ba30 100644 --- a/integration-tests/microprofile-fault-tolerance/src/main/java/org/apache/camel/quarkus/component/microprofile/it/faulttolerance/MicroProfileFaultToleranceRoutes.java +++ b/integration-tests/microprofile-fault-tolerance/src/main/java/org/apache/camel/quarkus/component/microprofile/it/faulttolerance/MicroProfileFaultToleranceRoutes.java @@ -97,7 +97,7 @@ public class MicroProfileFaultToleranceRoutes extends RouteBuilder { from("direct:faultToleranceWithTimeoutCustomExecutor") .circuitBreaker() - .faultToleranceConfiguration().timeoutEnabled(true).timeoutScheduledExecutorService("myThreadPool") + .faultToleranceConfiguration().timeoutEnabled(true).threadOffloadExecutorService("customExecutorService") .timeoutDuration(500).end() .process(exchange -> { AtomicInteger counter = MicroProfileFaultToleranceHelper.getCounter("timeoutCustomExecutor"); diff --git a/integration-tests/microprofile-fault-tolerance/src/main/java/org/apache/camel/quarkus/component/microprofile/it/faulttolerance/MicroprofileFaultToleranceProducers.java b/integration-tests/microprofile-fault-tolerance/src/main/java/org/apache/camel/quarkus/component/microprofile/it/faulttolerance/MicroprofileFaultToleranceProducers.java index 6939276a63..ec284a6345 100644 --- a/integration-tests/microprofile-fault-tolerance/src/main/java/org/apache/camel/quarkus/component/microprofile/it/faulttolerance/MicroprofileFaultToleranceProducers.java +++ b/integration-tests/microprofile-fault-tolerance/src/main/java/org/apache/camel/quarkus/component/microprofile/it/faulttolerance/MicroprofileFaultToleranceProducers.java @@ -20,61 +20,31 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; -import io.smallrye.faulttolerance.core.FaultToleranceStrategy; -import io.smallrye.faulttolerance.core.circuit.breaker.CircuitBreaker; -import io.smallrye.faulttolerance.core.stopwatch.SystemStopwatch; -import io.smallrye.faulttolerance.core.timer.ThreadTimer; -import io.smallrye.faulttolerance.core.util.ExceptionDecision; +import io.smallrye.faulttolerance.api.TypedGuard; import jakarta.enterprise.context.ApplicationScoped; import jakarta.enterprise.inject.Disposes; import jakarta.inject.Named; import jakarta.inject.Singleton; +import org.apache.camel.Exchange; @ApplicationScoped public class MicroprofileFaultToleranceProducers { - @Singleton - @Named("customCircuitBreaker") - CircuitBreaker<Integer> produceCustomCircuitBreaker(ThreadTimer threadTimer) { - FaultToleranceStrategy<Integer> delegate = ctx -> null; - return new CircuitBreaker<>(delegate, "description", ExceptionDecision.ALWAYS_FAILURE, 10, 40, 0.1, - 2, SystemStopwatch.INSTANCE, threadTimer) { - @Override - public String toString() { - return "customCircuitBreaker"; - } - }; + @Named("customTypedGuard") + TypedGuard<Exchange> produceCustomTypedGuard() { + return TypedGuard.create(Exchange.class).build(); } @ApplicationScoped - @Named("customBulkheadExecutorService") - ExecutorService produceCustomBulkheadExecutorService() { + @Named("customExecutorService") + ExecutorService produceCustomExecutorService() { return Executors.newFixedThreadPool(2); } - @Singleton - @Named("threadTimer") - ThreadTimer threadTimer(@Named("threadTimerExecutor") ExecutorService executorService) { - return new ThreadTimer(executorService); - } - - @ApplicationScoped - @Named("threadTimerExecutor") - ExecutorService threadTimerExecutor() { - return Executors.newSingleThreadExecutor(); - } - - void disposeThreadTimerExecutor( - @Disposes @Named("threadTimerExecutor") ExecutorService threadTimerExecutor, - ThreadTimer timer) { - try { - timer.shutdown(); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - } - + void disposeCustomExecutorService( + @Disposes @Named("customExecutorService") ExecutorService executorService) { try { - threadTimerExecutor.awaitTermination(10, TimeUnit.SECONDS); + executorService.awaitTermination(10, TimeUnit.SECONDS); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } diff --git a/integration-tests/microprofile-fault-tolerance/src/main/java/org/apache/camel/quarkus/component/microprofile/it/faulttolerance/MicroprofileFaultToleranceResource.java b/integration-tests/microprofile-fault-tolerance/src/main/java/org/apache/camel/quarkus/component/microprofile/it/faulttolerance/MicroprofileFaultToleranceResource.java index 713829f886..baa8d828d0 100644 --- a/integration-tests/microprofile-fault-tolerance/src/main/java/org/apache/camel/quarkus/component/microprofile/it/faulttolerance/MicroprofileFaultToleranceResource.java +++ b/integration-tests/microprofile-fault-tolerance/src/main/java/org/apache/camel/quarkus/component/microprofile/it/faulttolerance/MicroprofileFaultToleranceResource.java @@ -19,7 +19,7 @@ package org.apache.camel.quarkus.component.microprofile.it.faulttolerance; import java.util.concurrent.ExecutorService; import io.quarkus.arc.ClientProxy; -import io.smallrye.faulttolerance.core.circuit.breaker.CircuitBreaker; +import io.smallrye.faulttolerance.api.TypedGuard; import jakarta.inject.Inject; import jakarta.inject.Named; import jakarta.json.Json; @@ -32,6 +32,7 @@ import jakarta.ws.rs.PathParam; import jakarta.ws.rs.Produces; import jakarta.ws.rs.core.MediaType; import org.apache.camel.CamelContext; +import org.apache.camel.Exchange; import org.apache.camel.ProducerTemplate; import org.apache.camel.component.microprofile.faulttolerance.FaultToleranceProcessor; import org.apache.camel.component.mock.MockEndpoint; @@ -45,11 +46,11 @@ public class MicroprofileFaultToleranceResource { @Inject CamelContext context; - @Named("customCircuitBreaker") - CircuitBreaker<Integer> customCircuitBreaker; + @Named("customTypedGuard") + TypedGuard<Exchange> customTypedGuard; - @Named("customBulkheadExecutorService") - ExecutorService customBulkheadExecutorService; + @Named("customExecutorService") + ExecutorService customExecutorService; @Path("/route/{route}") @POST @@ -94,7 +95,7 @@ public class MicroprofileFaultToleranceResource { public JsonObject faultToleranceConfigurations() { FaultToleranceProcessor processor = context.getProcessor("ftp", FaultToleranceProcessor.class); JsonObjectBuilder objectBuilder = Json.createObjectBuilder(); - objectBuilder.add("isCustomCircuitBreakerRef", processor.getCircuitBreaker().equals(customCircuitBreaker)); + objectBuilder.add("isCustomTypedGuardRef", processor.getTypedGuard().equals(customTypedGuard)); objectBuilder.add("delay", processor.getDelay()); objectBuilder.add("successThreshold", processor.getSuccessThreshold()); objectBuilder.add("requestVolumeThreshold", processor.getRequestVolumeThreshold()); @@ -105,8 +106,8 @@ public class MicroprofileFaultToleranceResource { objectBuilder.add("bulkheadEnabled", processor.isBulkheadEnabled()); objectBuilder.add("bulkheadMaxConcurrentCalls", processor.getBulkheadMaxConcurrentCalls()); objectBuilder.add("bulkheadWaitingTaskQueue", processor.getBulkheadWaitingTaskQueue()); - objectBuilder.add("isCustomBulkheadExecutorServiceRef", - processor.getExecutorService().equals(ClientProxy.unwrap(customBulkheadExecutorService))); + objectBuilder.add("isCustomExecutorServiceRef", + processor.getExecutorService().equals(ClientProxy.unwrap(customExecutorService))); return objectBuilder.build(); } diff --git a/integration-tests/microprofile-fault-tolerance/src/test/java/org/apache/camel/quarkus/component/microprofile/it/faulttolerance/MicroProfileFaultToleranceConfigurationTest.java b/integration-tests/microprofile-fault-tolerance/src/test/java/org/apache/camel/quarkus/component/microprofile/it/faulttolerance/MicroProfileFaultToleranceConfigurationTest.java index ea1a3c3398..0304409138 100644 --- a/integration-tests/microprofile-fault-tolerance/src/test/java/org/apache/camel/quarkus/component/microprofile/it/faulttolerance/MicroProfileFaultToleranceConfigurationTest.java +++ b/integration-tests/microprofile-fault-tolerance/src/test/java/org/apache/camel/quarkus/component/microprofile/it/faulttolerance/MicroProfileFaultToleranceConfigurationTest.java @@ -31,7 +31,7 @@ class MicroProfileFaultToleranceConfigurationTest { RestAssured.get("/microprofile-fault-tolerance/configuration") .then() .body( - "isCustomCircuitBreakerRef", is(true), + "isCustomTypedGuardRef", is(true), "delay", is(15), "successThreshold", is(4), "requestVolumeThreshold", is(60), diff --git a/integration-tests/microprofile-fault-tolerance/src/test/java/org/apache/camel/quarkus/component/microprofile/it/faulttolerance/MicroProfileFaultToleranceConfigurationTestProfile.java b/integration-tests/microprofile-fault-tolerance/src/test/java/org/apache/camel/quarkus/component/microprofile/it/faulttolerance/MicroProfileFaultToleranceConfigurationTestProfile.java index ffb7d2827b..f042e4c03d 100644 --- a/integration-tests/microprofile-fault-tolerance/src/test/java/org/apache/camel/quarkus/component/microprofile/it/faulttolerance/MicroProfileFaultToleranceConfigurationTestProfile.java +++ b/integration-tests/microprofile-fault-tolerance/src/test/java/org/apache/camel/quarkus/component/microprofile/it/faulttolerance/MicroProfileFaultToleranceConfigurationTestProfile.java @@ -26,9 +26,9 @@ public class MicroProfileFaultToleranceConfigurationTestProfile implements Quark public Map<String, String> getConfigOverrides() { return CollectionHelper.mapOf( "load.config.test.route", "true", - "camel.faulttolerance.circuitBreaker", "customCircuitBreaker", + "camel.faulttolerance.typedGuard", "customTypedGuard", "camel.faulttolerance.bulkheadEnabled", "true", - "camel.faulttolerance.bulkheadExecutorService", "customBulkheadExecutorService", + "camel.faulttolerance.threadOffloadExecutorService", "customExecutorService", "camel.faulttolerance.delay", "15", "camel.faulttolerance.successThreshold", "4", "camel.faulttolerance.requestVolumeThreshold", "60", diff --git a/pom.xml b/pom.xml index 11dcf98d03..6ab98f5645 100644 --- a/pom.xml +++ b/pom.xml @@ -163,6 +163,7 @@ <reactor-netty.version>${reactor-netty-version}</reactor-netty.version> <retrofit.version>2.9.0</retrofit.version><!-- @sync org.influxdb:influxdb-java:${influxdb.version} dep:com.squareup.retrofit2:retrofit --> <rxjava3.version>3.1.8</rxjava3.version><!-- Used by amazon-kinesis-client and infinispan-client-hotrod-jakarta --> + <smallrye-fault-tolerance-standalone.version>6.9.1</smallrye-fault-tolerance-standalone.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:io.smallrye:smallrye-fault-tolerance --> <smallrye.reactive.messaging.camel.version>4.27.0</smallrye.reactive.messaging.camel.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:io.smallrye.reactive:smallrye-reactive-messaging-provider --> <smooks.version>${smooks-version}</smooks.version> <snakeyaml.version>2.4</snakeyaml.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:org.yaml:snakeyaml --> diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml index 09a48123fa..e15b2ff016 100644 --- a/poms/bom/pom.xml +++ b/poms/bom/pom.xml @@ -2019,6 +2019,12 @@ <groupId>org.apache.camel</groupId> <artifactId>camel-microprofile-fault-tolerance</artifactId> <version>${camel.version}</version> + <exclusions> + <exclusion> + <groupId>io.smallrye</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>org.apache.camel</groupId> @@ -7247,6 +7253,11 @@ <artifactId>rxjava</artifactId> <version>${rxjava3.version}</version> </dependency> + <dependency> + <groupId>io.smallrye</groupId> + <artifactId>smallrye-fault-tolerance-standalone</artifactId> + <version>${smallrye-fault-tolerance-standalone.version}</version> + </dependency> <dependency> <groupId>io.smallrye.reactive</groupId> <artifactId>smallrye-reactive-messaging-camel</artifactId> diff --git a/poms/bom/src/main/generated/flattened-full-pom.xml b/poms/bom/src/main/generated/flattened-full-pom.xml index 7c70996e99..9fac6c3191 100644 --- a/poms/bom/src/main/generated/flattened-full-pom.xml +++ b/poms/bom/src/main/generated/flattened-full-pom.xml @@ -1936,6 +1936,12 @@ <groupId>org.apache.camel</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> <artifactId>camel-microprofile-fault-tolerance</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> <version>4.12.0-SNAPSHOT</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> + <exclusions> + <exclusion> + <groupId>io.smallrye</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> + <artifactId>*</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>org.apache.camel</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> @@ -7148,6 +7154,11 @@ <artifactId>rxjava</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> <version>3.1.8</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> </dependency> + <dependency> + <groupId>io.smallrye</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> + <artifactId>smallrye-fault-tolerance-standalone</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> + <version>6.9.1</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> + </dependency> <dependency> <groupId>io.smallrye.reactive</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> <artifactId>smallrye-reactive-messaging-camel</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> diff --git a/poms/bom/src/main/generated/flattened-reduced-pom.xml b/poms/bom/src/main/generated/flattened-reduced-pom.xml index 198cdbe6c1..820385b5a7 100644 --- a/poms/bom/src/main/generated/flattened-reduced-pom.xml +++ b/poms/bom/src/main/generated/flattened-reduced-pom.xml @@ -1931,6 +1931,12 @@ <groupId>org.apache.camel</groupId> <artifactId>camel-microprofile-fault-tolerance</artifactId> <version>4.12.0-SNAPSHOT</version> + <exclusions> + <exclusion> + <groupId>io.smallrye</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>org.apache.camel</groupId> @@ -7103,6 +7109,11 @@ <artifactId>rxjava</artifactId> <version>3.1.8</version> </dependency> + <dependency> + <groupId>io.smallrye</groupId> + <artifactId>smallrye-fault-tolerance-standalone</artifactId> + <version>6.9.1</version> + </dependency> <dependency> <groupId>io.smallrye.reactive</groupId> <artifactId>smallrye-reactive-messaging-camel</artifactId> diff --git a/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml b/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml index 58d6603f73..b5c57acc47 100644 --- a/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml +++ b/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml @@ -1931,6 +1931,12 @@ <groupId>org.apache.camel</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> <artifactId>camel-microprofile-fault-tolerance</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> <version>4.12.0-SNAPSHOT</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> + <exclusions> + <exclusion> + <groupId>io.smallrye</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> + <artifactId>*</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>org.apache.camel</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> @@ -7103,6 +7109,11 @@ <artifactId>rxjava</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> <version>3.1.8</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> </dependency> + <dependency> + <groupId>io.smallrye</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> + <artifactId>smallrye-fault-tolerance-standalone</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> + <version>6.9.1</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> + </dependency> <dependency> <groupId>io.smallrye.reactive</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} --> <artifactId>smallrye-reactive-messaging-camel</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->