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/21 20:36:47 UTC
(camel) branch main updated: CAMEL-20225: convert MessageHistory to the clock API (#12531)
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 a0b8c9e7cd5 CAMEL-20225: convert MessageHistory to the clock API (#12531)
a0b8c9e7cd5 is described below
commit a0b8c9e7cd5c52f587a7ddf07a51b3de7ed8ff8e
Author: Otavio Rodolfo Piske <or...@users.noreply.github.com>
AuthorDate: Thu Dec 21 17:36:40 2023 -0300
CAMEL-20225: convert MessageHistory to the clock API (#12531)
---
.../metrics/messagehistory/MetricsMessageHistory.java | 4 ++--
.../messagehistory/MetricsMessageHistoryFactory.java | 12 ++++++------
.../messagehistory/MicrometerMessageHistory.java | 11 +----------
.../messagehistory/MicrometerMessageHistoryFactory.java | 12 ++++++------
.../src/main/java/org/apache/camel/MessageHistory.java | 9 ++++++++-
.../java/org/apache/camel/spi/MessageHistoryFactory.java | 4 ++--
.../camel/impl/engine/DefaultInflightRepository.java | 4 ++--
.../camel/impl/engine/DefaultMessageHistoryFactory.java | 12 ++++++------
.../org/apache/camel/support/DefaultMessageHistory.java | 15 ++++++---------
9 files changed, 39 insertions(+), 44 deletions(-)
diff --git a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistory.java b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistory.java
index 8fff54b508f..2cb49ae6123 100644
--- a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistory.java
+++ b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistory.java
@@ -29,8 +29,8 @@ public class MetricsMessageHistory extends DefaultMessageHistory {
private final Timer.Context context;
- public MetricsMessageHistory(String routeId, NamedNode namedNode, Timer timer, long timestamp, Message message) {
- super(routeId, namedNode, timestamp, message);
+ public MetricsMessageHistory(String routeId, NamedNode namedNode, Timer timer, Message message) {
+ super(routeId, namedNode, message);
this.context = timer.time();
}
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 efb34f95230..5acd266052d 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
@@ -152,6 +152,11 @@ public class MetricsMessageHistoryFactory extends ServiceSupport
@Override
public MessageHistory newMessageHistory(String routeId, NamedNode node, long timestamp, Exchange exchange) {
+ return newMessageHistory(routeId, node, exchange);
+ }
+
+ @Override
+ public MessageHistory newMessageHistory(String routeId, NamedNode node, Exchange exchange) {
if (nodePattern != null) {
String name = node.getShortName();
String[] parts = nodePattern.split(",");
@@ -169,12 +174,7 @@ public class MetricsMessageHistoryFactory extends ServiceSupport
}
Timer timer = metricsRegistry.timer(createName("history", routeId, node.getId()));
- 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);
+ return new MetricsMessageHistory(routeId, node, timer, msg);
}
private String createName(String type, String routeId, String id) {
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 93aafed3b62..3297f56fa1f 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
@@ -36,18 +36,9 @@ public class MicrometerMessageHistory extends DefaultMessageHistory {
private final MeterRegistry meterRegistry;
private final MicrometerMessageHistoryNamingStrategy namingStrategy;
- public MicrometerMessageHistory(MeterRegistry meterRegistry, Route route, NamedNode namedNode,
- MicrometerMessageHistoryNamingStrategy namingStrategy, long timestamp, Message message) {
- super(route.getId(), namedNode, timestamp, message);
- this.meterRegistry = meterRegistry;
- this.route = route;
- this.namingStrategy = namingStrategy;
- this.sample = Timer.start(meterRegistry);
- }
-
public MicrometerMessageHistory(MeterRegistry meterRegistry, Route route, NamedNode namedNode,
MicrometerMessageHistoryNamingStrategy namingStrategy, Message message) {
- super(route.getId(), namedNode, System.currentTimeMillis(), message);
+ super(route.getId(), namedNode, message);
this.meterRegistry = meterRegistry;
this.route = route;
this.namingStrategy = namingStrategy;
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 278f672bea2..01cee3eedc9 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
@@ -130,6 +130,11 @@ public class MicrometerMessageHistoryFactory extends ServiceSupport
@Override
public MessageHistory newMessageHistory(String routeId, NamedNode namedNode, long timestamp, Exchange exchange) {
+ return newMessageHistory(routeId, namedNode, exchange);
+ }
+
+ @Override
+ public MessageHistory newMessageHistory(String routeId, NamedNode namedNode, Exchange exchange) {
if (nodePattern != null) {
String name = namedNode.getShortName();
String[] parts = nodePattern.split(",");
@@ -148,17 +153,12 @@ public class MicrometerMessageHistoryFactory extends ServiceSupport
Route route = camelContext.getRoute(routeId);
if (route != null) {
- return new MicrometerMessageHistory(getMeterRegistry(), route, namedNode, getNamingStrategy(), timestamp, msg);
+ return new MicrometerMessageHistory(getMeterRegistry(), route, namedNode, getNamingStrategy(), msg);
} else {
return null;
}
}
- @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/MessageHistory.java b/core/camel-api/src/main/java/org/apache/camel/MessageHistory.java
index 8bad1dc5249..a86643b7d8d 100644
--- a/core/camel-api/src/main/java/org/apache/camel/MessageHistory.java
+++ b/core/camel-api/src/main/java/org/apache/camel/MessageHistory.java
@@ -32,7 +32,7 @@ public interface MessageHistory {
NamedNode getNode();
/**
- * Gets the timestamp at the point of this history.
+ * Gets the point in time the message history was created
*/
long getTime();
@@ -41,6 +41,13 @@ public interface MessageHistory {
*/
long getElapsed();
+ /**
+ * The elapsed time since created.
+ */
+ default long getElapsedSinceCreated() {
+ return System.nanoTime() - getTime();
+ }
+
/**
* Used for signalling that processing of the node is done.
*/
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 c695694708b..c070c052ffb 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
@@ -28,11 +28,11 @@ import org.apache.camel.StaticService;
public interface MessageHistoryFactory extends StaticService, CamelContextAware {
/**
- * Creates a new {@link MessageHistory}
+ * Deprecated way to create a new {@link MessageHistory}
*
* @param routeId the route id
* @param node the node in the route
- * @param timestamp the time the message processed at this node.
+ * @param timestamp the timestamp is unused and will be removed in the future
* @param exchange the current exchange
* @return a new {@link MessageHistory}
* @deprecated use {@link #newMessageHistory(String, NamedNode, Exchange)}
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultInflightRepository.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultInflightRepository.java
index 44483efcb7e..53cd68e0187 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultInflightRepository.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultInflightRepository.java
@@ -241,9 +241,9 @@ public class DefaultInflightRepository extends ServiceSupport implements Infligh
MessageHistory history = list.get(list.size() - 1);
if (history != null) {
long elapsed = history.getElapsed();
- if (elapsed == 0 && history.getTime() > 0) {
+ if (elapsed == 0) {
// still in progress, so lets compute it via the start time
- elapsed = System.currentTimeMillis() - history.getTime();
+ elapsed = history.getElapsedSinceCreated();
}
return elapsed;
} else {
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 14e9dae699b..25450573d26 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
@@ -48,6 +48,11 @@ public class DefaultMessageHistoryFactory extends ServiceSupport implements Mess
@Override
public MessageHistory newMessageHistory(String routeId, NamedNode node, long timestamp, Exchange exchange) {
+ return newMessageHistory(routeId, node, exchange);
+ }
+
+ @Override
+ public MessageHistory newMessageHistory(String routeId, NamedNode node, Exchange exchange) {
if (nodePatternParts != null) {
String name = node.getShortName();
for (String part : nodePatternParts) {
@@ -63,12 +68,7 @@ public class DefaultMessageHistoryFactory extends ServiceSupport implements Mess
msg = exchange.getMessage().copy();
}
- return new DefaultMessageHistory(routeId, node, timestamp, msg);
- }
-
- @Override
- public MessageHistory newMessageHistory(String routeId, NamedNode node, Exchange exchange) {
- return newMessageHistory(routeId, node, System.currentTimeMillis(), exchange);
+ return new DefaultMessageHistory(routeId, node, msg);
}
@ManagedAttribute(description = "Whether message history is enabled")
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/DefaultMessageHistory.java b/core/camel-support/src/main/java/org/apache/camel/support/DefaultMessageHistory.java
index cb8c5600b5d..dc4b6edd4b2 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/DefaultMessageHistory.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/DefaultMessageHistory.java
@@ -28,19 +28,18 @@ public class DefaultMessageHistory implements MessageHistory {
private final String routeId;
private final NamedNode node;
private final String nodeId;
- private final long timestamp;
+ private final MonotonicClock clock = new MonotonicClock();
private final Message message;
private long elapsed;
- public DefaultMessageHistory(String routeId, NamedNode node, long timestamp) {
- this(routeId, node, timestamp, null);
+ public DefaultMessageHistory(String routeId, NamedNode node) {
+ this(routeId, node, null);
}
- public DefaultMessageHistory(String routeId, NamedNode node, long timestamp, Message message) {
+ public DefaultMessageHistory(String routeId, NamedNode node, Message message) {
this.routeId = routeId;
this.node = node;
this.nodeId = node.getId();
- this.timestamp = timestamp;
this.message = message;
}
@@ -56,7 +55,7 @@ public class DefaultMessageHistory implements MessageHistory {
@Override
public long getTime() {
- return timestamp;
+ return clock.getCreated();
}
@Override
@@ -66,9 +65,7 @@ public class DefaultMessageHistory implements MessageHistory {
@Override
public void nodeProcessingDone() {
- if (timestamp > 0) {
- elapsed = System.currentTimeMillis() - timestamp;
- }
+ elapsed = clock.elapsed();
}
@Override