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());

Reply via email to