You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by gi...@apache.org on 2025/05/21 01:53:02 UTC
(camel-quarkus) 10/34: Adapt to Camel switching to SmallRye Fault Tolerance programmatic APIs
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 4da8cacb90fe329216883ab81be23a3fb5eb8e52
Author: James Netherton <ja...@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 b420630d09..9ad1d04eef 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 98bba5585a..373ebeffe6 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -2015,6 +2015,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>
@@ -7243,6 +7249,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 4be674005c..6408c25bae 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 210a7368e6..d3e5a5cc6d 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 f43f7f271a..bfcd1a066e 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} -->