This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch camel-main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/camel-main by this push:
new 045c414cdca chore(extension): support record-last-exchange-timestamp
metric
045c414cdca is described below
commit 045c414cdca588f6d0d4ce4309c144ccf488e47a
Author: Pasquale Congiusti <[email protected]>
AuthorDate: Wed Nov 4 16:08:50 2026 +0100
chore(extension): support record-last-exchange-timestamp metric
---
.../pages/reference/extensions/micrometer.adoc | 6 ++
.../MicrometerMetricsConfigDefaultsTest.java | 1 +
...eterRecordLastExchangeTimestampDisableTest.java | 76 ++++++++++++++++++++++
.../micrometer/CamelMicrometerConfig.java | 8 +++
.../micrometer/CamelMicrometerRecorder.java | 1 +
5 files changed, 92 insertions(+)
diff --git a/docs/modules/ROOT/pages/reference/extensions/micrometer.adoc
b/docs/modules/ROOT/pages/reference/extensions/micrometer.adoc
index f1aa099f03c..6caab7d80cf 100644
--- a/docs/modules/ROOT/pages/reference/extensions/micrometer.adoc
+++ b/docs/modules/ROOT/pages/reference/extensions/micrometer.adoc
@@ -105,6 +105,12 @@ Set whether to enable the MicrometerExchangeEventNotifier
for capturing metrics
| `boolean`
| `true`
+a|icon:lock[title=Fixed at build time]
[[quarkus-camel-metrics-record-last-exchange-timestamp]]`link:#quarkus-camel-metrics-record-last-exchange-timestamp[quarkus.camel.metrics.record-last-exchange-timestamp]`
+
+Set whether the MicrometerExchangeEventNotifier should record the timestamp of
the last processed exchange.
+| `boolean`
+| `true`
+
a|icon:lock[title=Fixed at build time]
[[quarkus-camel-metrics-base-endpoint-uri-exchange-event-notifier]]`link:#quarkus-camel-metrics-base-endpoint-uri-exchange-event-notifier[quarkus.camel.metrics.base-endpoint-uri-exchange-event-notifier]`
Whether to use static or dynamic values for Endpoint Name tags in captured
metrics. By default, static values are
diff --git
a/extensions/micrometer/deployment/src/test/java/org/apache/camel/quarkus/component/micrometer/deployment/MicrometerMetricsConfigDefaultsTest.java
b/extensions/micrometer/deployment/src/test/java/org/apache/camel/quarkus/component/micrometer/deployment/MicrometerMetricsConfigDefaultsTest.java
index d57aca3a792..67b7ea62202 100644
---
a/extensions/micrometer/deployment/src/test/java/org/apache/camel/quarkus/component/micrometer/deployment/MicrometerMetricsConfigDefaultsTest.java
+++
b/extensions/micrometer/deployment/src/test/java/org/apache/camel/quarkus/component/micrometer/deployment/MicrometerMetricsConfigDefaultsTest.java
@@ -91,6 +91,7 @@ public class MicrometerMetricsConfigDefaultsTest {
MicrometerExchangeEventNotifier micrometerExchangeEventNotifier =
(MicrometerExchangeEventNotifier) optionalExchangeEventNotifier
.get();
assertTrue(micrometerExchangeEventNotifier.getNamingStrategy().isBaseEndpointURI());
+
assertTrue(micrometerExchangeEventNotifier.isRecordLastExchangeTimestamp());
Optional<EventNotifier> optionalRouteEventNotifier =
context.getManagementStrategy()
.getEventNotifiers()
diff --git
a/extensions/micrometer/deployment/src/test/java/org/apache/camel/quarkus/component/micrometer/deployment/MicrometerRecordLastExchangeTimestampDisableTest.java
b/extensions/micrometer/deployment/src/test/java/org/apache/camel/quarkus/component/micrometer/deployment/MicrometerRecordLastExchangeTimestampDisableTest.java
new file mode 100644
index 00000000000..4b1ca629a84
--- /dev/null
+++
b/extensions/micrometer/deployment/src/test/java/org/apache/camel/quarkus/component/micrometer/deployment/MicrometerRecordLastExchangeTimestampDisableTest.java
@@ -0,0 +1,76 @@
+/*
+ * 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.quarkus.component.micrometer.deployment;
+
+import java.io.IOException;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.Optional;
+import java.util.Properties;
+
+import io.quarkus.test.QuarkusExtensionTest;
+import jakarta.inject.Inject;
+import org.apache.camel.CamelContext;
+import
org.apache.camel.component.micrometer.eventnotifier.MicrometerExchangeEventNotifier;
+import org.apache.camel.spi.EventNotifier;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.Asset;
+import org.jboss.shrinkwrap.api.asset.StringAsset;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class MicrometerRecordLastExchangeTimestampDisableTest {
+ @RegisterExtension
+ static final QuarkusExtensionTest CONFIG = new QuarkusExtensionTest()
+ .setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
+ .addAsResource(applicationProperties(),
"application.properties"));
+
+ @Inject
+ CamelContext context;
+
+ @Test
+ public void testRecordLastExchangeTimestampDisabled() {
+ Optional<EventNotifier> optionalExchangeEventNotifier =
context.getManagementStrategy()
+ .getEventNotifiers()
+ .stream()
+ .filter(eventNotifier ->
eventNotifier.getClass().equals(MicrometerExchangeEventNotifier.class))
+ .findFirst();
+ assertTrue(optionalExchangeEventNotifier.isPresent());
+
+ MicrometerExchangeEventNotifier eventNotifier =
(MicrometerExchangeEventNotifier) optionalExchangeEventNotifier.get();
+ assertFalse(eventNotifier.isRecordLastExchangeTimestamp());
+ }
+
+ public static Asset applicationProperties() {
+ Writer writer = new StringWriter();
+
+ Properties props = new Properties();
+
props.setProperty("quarkus.camel.metrics.record-last-exchange-timestamp",
"false");
+
+ try {
+ props.store(writer, "");
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+
+ return new StringAsset(writer.toString());
+ }
+}
diff --git
a/extensions/micrometer/runtime/src/main/java/org/apache/camel/quarkus/component/micrometer/CamelMicrometerConfig.java
b/extensions/micrometer/runtime/src/main/java/org/apache/camel/quarkus/component/micrometer/CamelMicrometerConfig.java
index 282ff42085a..78c2079c562 100644
---
a/extensions/micrometer/runtime/src/main/java/org/apache/camel/quarkus/component/micrometer/CamelMicrometerConfig.java
+++
b/extensions/micrometer/runtime/src/main/java/org/apache/camel/quarkus/component/micrometer/CamelMicrometerConfig.java
@@ -52,6 +52,14 @@ public interface CamelMicrometerConfig {
@WithDefault("true")
boolean enableExchangeEventNotifier();
+ /**
+ * Set whether the MicrometerExchangeEventNotifier should record the
timestamp of the last processed exchange.
+ *
+ * @asciidoclet
+ */
+ @WithDefault("true")
+ boolean recordLastExchangeTimestamp();
+
/**
* Whether to use static or dynamic values for Endpoint Name tags in
captured metrics. By default, static values are
* used. When using dynamic tags, then a dynamic to (toD) can compute many
different endpoint URIs that,
diff --git
a/extensions/micrometer/runtime/src/main/java/org/apache/camel/quarkus/component/micrometer/CamelMicrometerRecorder.java
b/extensions/micrometer/runtime/src/main/java/org/apache/camel/quarkus/component/micrometer/CamelMicrometerRecorder.java
index 4408324e67c..88708b16a38 100644
---
a/extensions/micrometer/runtime/src/main/java/org/apache/camel/quarkus/component/micrometer/CamelMicrometerRecorder.java
+++
b/extensions/micrometer/runtime/src/main/java/org/apache/camel/quarkus/component/micrometer/CamelMicrometerRecorder.java
@@ -94,6 +94,7 @@ public class CamelMicrometerRecorder {
if (config.enableExchangeEventNotifier()) {
MicrometerExchangeEventNotifier eventNotifier = new
MicrometerExchangeEventNotifier();
eventNotifier.setBaseEndpointURI(config.baseEndpointURIExchangeEventNotifier());
+
eventNotifier.setRecordLastExchangeTimestamp(config.recordLastExchangeTimestamp());
eventNotifier.setLogMetricsOnShutdown(config.logMetricsOnShutdown());
if (config.logMetricsOnShutdownFilters().isPresent()) {
eventNotifier.setLogMetricsOnShutdownFilters(config.logMetricsOnShutdownFilters().get());