You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2023/12/19 13:14:42 UTC

(camel) branch main updated: CAMEL-20225: initial rework of message history to use the new clock API (#12479)

This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 13fe1fa080a CAMEL-20225: initial rework of message history to use the new clock API (#12479)
13fe1fa080a is described below

commit 13fe1fa080a0c9d31e15221ac8074c8f98943dd2
Author: Otavio Rodolfo Piske <or...@users.noreply.github.com>
AuthorDate: Tue Dec 19 10:14:35 2023 -0300

    CAMEL-20225: initial rework of message history to use the new clock API (#12479)
---
 .../metrics/messagehistory/MetricsMessageHistoryFactory.java |  5 +++++
 .../micrometer/messagehistory/MicrometerMessageHistory.java  |  9 +++++++++
 .../messagehistory/MicrometerMessageHistoryFactory.java      |  5 +++++
 .../java/org/apache/camel/spi/MessageHistoryFactory.java     | 12 ++++++++++++
 .../org/apache/camel/impl/engine/CamelInternalProcessor.java |  2 +-
 .../camel/impl/engine/DefaultMessageHistoryFactory.java      |  5 +++++
 6 files changed, 37 insertions(+), 1 deletion(-)

diff --git a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistoryFactory.java b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistoryFactory.java
index e2400281b55..efb34f95230 100644
--- a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistoryFactory.java
+++ b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistoryFactory.java
@@ -172,6 +172,11 @@ public class MetricsMessageHistoryFactory extends ServiceSupport
         return new MetricsMessageHistory(routeId, node, timer, timestamp, msg);
     }
 
+    @Override
+    public MessageHistory newMessageHistory(String routeId, NamedNode node, Exchange exchange) {
+        return newMessageHistory(routeId, node, System.currentTimeMillis(), exchange);
+    }
+
     private String createName(String type, String routeId, String id) {
         String name = camelContext.getManagementName() != null ? camelContext.getManagementName() : camelContext.getName();
 
diff --git a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/messagehistory/MicrometerMessageHistory.java b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/messagehistory/MicrometerMessageHistory.java
index c88c8f9912d..4a6ddd517ea 100644
--- a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/messagehistory/MicrometerMessageHistory.java
+++ b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/messagehistory/MicrometerMessageHistory.java
@@ -45,6 +45,15 @@ public class MicrometerMessageHistory extends DefaultMessageHistory {
         this.sample = Timer.start(meterRegistry);
     }
 
+    public MicrometerMessageHistory(MeterRegistry meterRegistry, Route route, NamedNode namedNode,
+            MicrometerMessageHistoryNamingStrategy namingStrategy, Message message) {
+        super(route.getId(), namedNode, System.currentTimeMillis(), message);
+        this.meterRegistry = meterRegistry;
+        this.route = route;
+        this.namingStrategy = namingStrategy;
+        this.sample = Timer.start(meterRegistry);
+    }
+
     @Override
     public void nodeProcessingDone() {
         super.nodeProcessingDone();
diff --git a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/messagehistory/MicrometerMessageHistoryFactory.java b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/messagehistory/MicrometerMessageHistoryFactory.java
index 066dbd4195d..278f672bea2 100644
--- a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/messagehistory/MicrometerMessageHistoryFactory.java
+++ b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/messagehistory/MicrometerMessageHistoryFactory.java
@@ -154,6 +154,11 @@ public class MicrometerMessageHistoryFactory extends ServiceSupport
         }
     }
 
+    @Override
+    public MessageHistory newMessageHistory(String routeId, NamedNode node, Exchange exchange) {
+        return newMessageHistory(routeId, node, System.currentTimeMillis(), exchange);
+    }
+
     @Override
     protected void doStart() throws Exception {
         if (meterRegistry == null) {
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/MessageHistoryFactory.java b/core/camel-api/src/main/java/org/apache/camel/spi/MessageHistoryFactory.java
index c9ebd9e9896..12534d070a9 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/MessageHistoryFactory.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/MessageHistoryFactory.java
@@ -35,9 +35,21 @@ public interface MessageHistoryFactory extends StaticService, CamelContextAware
      * @param  timestamp the time the message processed at this node.
      * @param  exchange  the current exchange
      * @return           a new {@link MessageHistory}
+     * @deprecated use {@link #newMessageHistory(String, NamedNode, Exchange)}
      */
+    @Deprecated(since = "4.4.0")
     MessageHistory newMessageHistory(String routeId, NamedNode node, long timestamp, Exchange exchange);
 
+    /**
+     * Creates a new {@link MessageHistory}
+     *
+     * @param  routeId   the route id
+     * @param  node      the node in the route
+     * @param  exchange  the current exchange
+     * @return           a new {@link MessageHistory}
+     */
+    MessageHistory newMessageHistory(String routeId, NamedNode node, Exchange exchange);
+
     /**
      * Whether to make a copy of the message in the {@link MessageHistory}. By default this is turned off. Beware that
      * you should not mutate or change the content on the copied message, as its purpose is as a read-only view of the
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java
index 9a581058ba2..a821bb0d68a 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java
@@ -930,7 +930,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In
                 targetRouteId = ExchangeHelper.getRouteId(exchange);
             }
 
-            MessageHistory history = factory.newMessageHistory(targetRouteId, definition, System.currentTimeMillis(), exchange);
+            MessageHistory history = factory.newMessageHistory(targetRouteId, definition, exchange);
             if (history != null) {
                 List<MessageHistory> list = exchange.getProperty(ExchangePropertyKey.MESSAGE_HISTORY, List.class);
                 if (list == null) {
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultMessageHistoryFactory.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultMessageHistoryFactory.java
index b9adef565b3..14e9dae699b 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultMessageHistoryFactory.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultMessageHistoryFactory.java
@@ -66,6 +66,11 @@ public class DefaultMessageHistoryFactory extends ServiceSupport implements Mess
         return new DefaultMessageHistory(routeId, node, timestamp, msg);
     }
 
+    @Override
+    public MessageHistory newMessageHistory(String routeId, NamedNode node, Exchange exchange) {
+        return newMessageHistory(routeId, node, System.currentTimeMillis(), exchange);
+    }
+
     @ManagedAttribute(description = "Whether message history is enabled")
     public boolean isEnabled() {
         return camelContext != null ? camelContext.isMessageHistory() : false;