This is an automated email from the ASF dual-hosted git repository. Croway pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-spring-boot.git
commit 8c96fc6e2b0e0ca99fab723a09bf16aad26eb058 Author: croway <[email protected]> AuthorDate: Sun Nov 8 10:44:27 2026 +0100 CAMEL-26691: camel-spring-boot - remove the activity options of the backlog tracer The activity tracking of the backlog tracer is removed in Camel and replaced by the timeline dev console, so BacklogTracer no longer has setActivitySize and setActivityEnabled and camel-spring-boot no longer compiled. Removes camel.trace.activity-enabled and camel.trace.activity-size, and the activity dev console from the Spring Boot catalog (the catalog generator only adds dev consoles, it never removes them) in favour of the timeline one. --- .../springboot/catalog/dev-consoles.properties | 2 +- .../springboot/catalog/dev-consoles/activity.json | 100 ------ .../springboot/catalog/dev-consoles/timeline.json | 356 +++++++++++++++++++++ .../src/main/docs/spring-boot.json | 14 - .../boot/trace/CamelTraceAutoConfiguration.java | 5 - .../trace/CamelTraceConfigurationProperties.java | 28 -- 6 files changed, 357 insertions(+), 148 deletions(-) diff --git a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/dev-consoles.properties b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/dev-consoles.properties index 4d87b1a3db4..5c68acc5073 100644 --- a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/dev-consoles.properties +++ b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/dev-consoles.properties @@ -1,4 +1,3 @@ -activity api aws-secrets aws2-s3 @@ -68,6 +67,7 @@ startup-recorder stub system-properties thread +timeline top trace transformers diff --git a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/dev-consoles/activity.json b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/dev-consoles/activity.json deleted file mode 100644 index cf5341c4d3a..00000000000 --- a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/dev-consoles/activity.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "console": { - "kind": "console", - "group": "camel", - "name": "activity", - "title": "Camel Activity", - "description": "Recent completed exchange activity", - "deprecated": false, - "readOnly": true, - "javaType": "org.apache.camel.impl.console.ActivityDevConsole", - "groupId": "org.apache.camel.springboot", - "artifactId": "camel-console-starter", - "version": "4.24.0-SNAPSHOT" - }, - "response": { - "type": "object", - "properties": { - "activityEnabled": { - "type": "boolean", - "description": "Whether activity tracking is enabled" - }, - "activitySize": { - "type": "integer", - "description": "The maximum number of activity entries retained" - }, - "activity": { - "type": "array", - "items": { - "type": "object", - "properties": { - "uid": { - "type": "integer", - "description": "Unique ID of the activity entry" - }, - "exchangeId": { - "type": "string", - "description": "The exchange ID" - }, - "routeId": { - "type": "string", - "description": "The route ID (only present when known)" - }, - "fromEndpointUri": { - "type": "string", - "description": "The from endpoint URI (only present when known)" - }, - "timestamp": { - "type": "integer", - "description": "Epoch time in milliseconds (only present when known)" - }, - "elapsed": { - "type": "integer", - "description": "Elapsed time in milliseconds" - }, - "failed": { - "type": "boolean", - "description": "Whether the exchange failed" - }, - "exception": { - "type": "string", - "description": "The exception message (only present when the exchange failed)" - }, - "endpointSends": { - "type": "array", - "items": { - "type": "object", - "properties": { - "endpointUri": { - "type": "string", - "description": "The endpoint URI" - }, - "remoteEndpoint": { - "type": "boolean", - "description": "Whether the endpoint is remote" - }, - "elapsed": { - "type": "integer", - "description": "Elapsed time in milliseconds" - } - }, - "required": [ - "remoteEndpoint", - "elapsed" - ] - }, - "description": "The endpoints this exchange was sent to (only present when any)" - } - }, - "required": [ - "uid", - "elapsed", - "failed" - ] - }, - "description": "The recent activity entries" - } - } - } -} - diff --git a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/dev-consoles/timeline.json b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/dev-consoles/timeline.json new file mode 100644 index 00000000000..cdd36fdb87e --- /dev/null +++ b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/dev-consoles/timeline.json @@ -0,0 +1,356 @@ +{ + "console": { + "kind": "console", + "group": "camel", + "name": "timeline", + "title": "Camel Timeline", + "description": "Per second, what each route did, the errors, and the failed and slowest exchanges", + "deprecated": false, + "readOnly": true, + "javaType": "org.apache.camel.impl.console.TimelineDevConsole", + "groupId": "org.apache.camel.springboot", + "artifactId": "camel-console-starter", + "version": "4.24.0-SNAPSHOT" + }, + "options": { + "exchanges": { + "index": 0, + "kind": "option", + "displayName": "Exchanges", + "group": "query", + "label": "query", + "required": false, + "type": "boolean", + "javaType": "java.lang.Boolean", + "deprecated": false, + "autowired": false, + "secret": false, + "defaultValue": true, + "description": "Whether to include the kept exchanges" + }, + "routeId": { + "index": 1, + "kind": "option", + "displayName": "Route Id", + "group": "query", + "label": "query", + "required": false, + "type": "string", + "javaType": "java.lang.String", + "deprecated": false, + "autowired": false, + "secret": false, + "description": "Filter by route id (pattern)" + }, + "seconds": { + "index": 2, + "kind": "option", + "displayName": "Seconds", + "group": "query", + "label": "query", + "required": false, + "type": "integer", + "javaType": "java.lang.Integer", + "deprecated": false, + "autowired": false, + "secret": false, + "description": "The number of seconds, up to the recorded seconds (the default)" + } + }, + "response": { + "type": "object", + "properties": { + "end": { + "type": "integer", + "description": "Epoch second of the last second (the oldest is end - seconds + 1)" + }, + "seconds": { + "type": "integer", + "description": "The number of seconds of each series, oldest first" + }, + "exchangesDone": { + "type": "array", + "items": { + "type": "integer" + }, + "description": "Exchanges done per second, in the routes they came in" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "routeId": { + "type": "string", + "description": "The route ID" + }, + "from": { + "type": "string", + "description": "The from endpoint URI (only present when known)" + }, + "completed": { + "type": "array", + "items": { + "type": "integer" + }, + "description": "Exchanges completed per second, not counting the recovered and handled ones" + }, + "recovered": { + "type": "array", + "items": { + "type": "integer" + }, + "description": "Exchanges per second that completed after a redelivery in this route" + }, + "handled": { + "type": "array", + "items": { + "type": "integer" + }, + "description": "Exchanges per second whose failure the error handler handled" + }, + "failed": { + "type": "array", + "items": { + "type": "integer" + }, + "description": "Exchanges failed per second" + }, + "inflight": { + "type": "array", + "items": { + "type": "integer" + }, + "description": "Exchanges in flight at the end of each second" + }, + "meanMillis": { + "type": "array", + "items": { + "type": "integer" + }, + "description": "Mean processing time per second in milliseconds" + }, + "p95Millis": { + "type": "array", + "items": { + "type": "integer" + }, + "description": "p95 processing time per second in milliseconds, of the exchanges that came into this route" + }, + "maxMillis": { + "type": "array", + "items": { + "type": "integer" + }, + "description": "Max processing time per second in milliseconds, of the exchanges that came into this route" + }, + "redeliveryAttempts": { + "type": "array", + "items": { + "type": "integer" + }, + "description": "Redelivery attempts per second in this route" + }, + "down": { + "type": "array", + "items": { + "type": "integer" + }, + "description": "Per second 1 when a camel-chaos rule had the route down (stall or a lifecycle fault), else 0 (only present with camel-chaos)" + } + } + }, + "description": "The routes" + }, + "errors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "routeId": { + "type": "string", + "description": "The route ID where the exchange failed" + }, + "exception": { + "type": "string", + "description": "The exception class name" + }, + "statusCode": { + "type": "integer", + "description": "The HTTP status code of the exception (only present when known)" + }, + "chaosRule": { + "type": "string", + "description": "The camel-chaos rule that made the error (only present for a chaos fault)" + }, + "counts": { + "type": "array", + "items": { + "type": "integer" + }, + "description": "Errors per second" + } + } + }, + "description": "The errors by route and exception (only present when there are any)" + }, + "chaos": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The id of the camel-chaos rule" + }, + "rule": { + "type": "string", + "description": "The rule in its one-line text form" + }, + "faults": { + "type": "array", + "items": { + "type": "integer" + }, + "description": "The faults the rule fired per second" + } + } + }, + "description": "The faults per second of each camel-chaos rule that fired in the seconds (only present when one did)" + }, + "routeEvents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "routeId": { + "type": "string", + "description": "The route ID" + }, + "event": { + "type": "string", + "description": "What happened to the route: started, stopped, reloaded, removed or restartFailed" + }, + "second": { + "type": "integer", + "description": "The epoch second it happened" + } + }, + "required": [ + "second" + ] + }, + "description": "What happened to the routes in the seconds: started, stopped, reloaded, removed (only present when anything did)" + }, + "circuitBreakers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "routeId": { + "type": "string", + "description": "The route ID" + }, + "id": { + "type": "string", + "description": "The id of the circuit breaker EIP (not present for a route policy)" + }, + "kind": { + "type": "string", + "description": "The kind of circuit breaker: resilience4j, fault-tolerance or route-policy" + }, + "states": { + "type": "array", + "items": { + "type": "integer" + }, + "description": "Per second 2 when the circuit breaker was open, 1 half open, else 0" + } + } + }, + "description": "The circuit breakers that were open or half open in the seconds (only present when one was)" + }, + "exchanges": { + "type": "array", + "items": { + "type": "object", + "properties": { + "exchangeId": { + "type": "string", + "description": "The exchange ID" + }, + "routeId": { + "type": "string", + "description": "The route ID the exchange came in" + }, + "fromEndpointUri": { + "type": "string", + "description": "The from endpoint URI (only present when known)" + }, + "timestamp": { + "type": "integer", + "description": "Epoch time in milliseconds the exchange was created" + }, + "elapsed": { + "type": "integer", + "description": "Elapsed time in milliseconds" + }, + "failed": { + "type": "boolean", + "description": "Whether the exchange failed" + }, + "handled": { + "type": "boolean", + "description": "Whether the error handler handled a failure of the exchange" + }, + "redelivered": { + "type": "boolean", + "description": "Whether the exchange was redelivered" + }, + "exception": { + "type": "string", + "description": "The exception message (only present when the exchange failed, or when it recovered: the failure it was redelivered for)" + }, + "chaosRule": { + "type": "string", + "description": "The camel-chaos rule that faulted the exchange (only present when one did)" + }, + "endpointSends": { + "type": "array", + "items": { + "type": "object", + "properties": { + "endpointUri": { + "type": "string", + "description": "The endpoint URI" + }, + "elapsed": { + "type": "integer", + "description": "Elapsed time of the call in milliseconds" + } + }, + "required": [ + "elapsed" + ] + }, + "description": "The remote endpoints the exchange was sent to (only present when any)" + } + }, + "required": [ + "timestamp", + "elapsed", + "failed", + "handled", + "redelivered" + ] + }, + "description": "Per second the failed, handled and recovered exchanges (up to 10) and the 3 slowest, oldest first (only present when asked for)" + } + }, + "required": [ + "end", + "seconds" + ] + } +} + diff --git a/core/camel-spring-boot/src/main/docs/spring-boot.json b/core/camel-spring-boot/src/main/docs/spring-boot.json index e0cd1e69854..c80272e3689 100644 --- a/core/camel-spring-boot/src/main/docs/spring-boot.json +++ b/core/camel-spring-boot/src/main/docs/spring-boot.json @@ -1590,20 +1590,6 @@ "description": "Sets the default time unit used for keep alive time", "sourceType": "org.apache.camel.spring.boot.threadpool.CamelThreadPoolConfigurationProperties" }, - { - "name": "camel.trace.activity-enabled", - "type": "java.lang.Boolean", - "description": "Whether activity tracking is enabled.", - "sourceType": "org.apache.camel.spring.boot.trace.CamelTraceConfigurationProperties", - "defaultValue": false - }, - { - "name": "camel.trace.activity-size", - "type": "java.lang.Integer", - "description": "Number of completed exchange summaries to keep in the activity queue (should be between 1 - 1000). Default is 100.", - "sourceType": "org.apache.camel.spring.boot.trace.CamelTraceConfigurationProperties", - "defaultValue": 100 - }, { "name": "camel.trace.backlog-size", "type": "java.lang.Integer", diff --git a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/trace/CamelTraceAutoConfiguration.java b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/trace/CamelTraceAutoConfiguration.java index b4ebfa3acf0..c3f3c1ac6c9 100644 --- a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/trace/CamelTraceAutoConfiguration.java +++ b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/trace/CamelTraceAutoConfiguration.java @@ -63,11 +63,6 @@ public class CamelTraceAutoConfiguration { tracer.setTraceTemplates(config.isTraceTemplates()); tracer.setTracePattern(config.getTracePattern()); tracer.setTraceFilter(config.getTraceFilter()); - tracer.setActivitySize(config.getActivitySize()); - // dev profile enables activity tracking so tooling (TUI) gets enriched data - boolean activityEnabled = config.isActivityEnabled() - || "dev".equals(camelContext.getCamelContextExtension().getProfile()); - tracer.setActivityEnabled(activityEnabled); camelContext.getCamelContextExtension().addContextPlugin(BacklogTracer.class, tracer); camelContext.addService(tracer); diff --git a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/trace/CamelTraceConfigurationProperties.java b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/trace/CamelTraceConfigurationProperties.java index 48fcd93dcbd..32574b4305e 100644 --- a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/trace/CamelTraceConfigurationProperties.java +++ b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/trace/CamelTraceConfigurationProperties.java @@ -93,18 +93,6 @@ public class CamelTraceConfigurationProperties { @Metadata(label = "advanced") private boolean traceTemplates; - /** - * Whether activity tracking is enabled. - */ - private boolean activityEnabled; - - /** - * Number of completed exchange summaries to keep in the activity queue (should be between 1 - 1000). Default is - * 100. - */ - @Metadata(label = "advanced", defaultValue = "100") - private int activitySize = 100; - /** * Filter for tracing by route or node id */ @@ -211,22 +199,6 @@ public class CamelTraceConfigurationProperties { this.traceTemplates = traceTemplates; } - public boolean isActivityEnabled() { - return activityEnabled; - } - - public void setActivityEnabled(boolean activityEnabled) { - this.activityEnabled = activityEnabled; - } - - public int getActivitySize() { - return activitySize; - } - - public void setActivitySize(int activitySize) { - this.activitySize = activitySize; - } - public String getTracePattern() { return tracePattern; }
