This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch exchange-factory in repository https://gitbox.apache.org/repos/asf/camel.git
commit fa508e6af03135d495dc111e183a9e95bbdb6e4e Author: Claus Ibsen <[email protected]> AuthorDate: Thu Feb 18 16:19:29 2021 +0100 CAMEL-16222: PooledExchangeFactory experiment --- .../src/main/java/org/apache/camel/ExtendedExchange.java | 5 +++++ .../org/apache/camel/impl/engine/PooledExchangeFactory.java | 4 +++- .../main/java/org/apache/camel/support/DefaultExchange.java | 12 +++++++----- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/core/camel-api/src/main/java/org/apache/camel/ExtendedExchange.java b/core/camel-api/src/main/java/org/apache/camel/ExtendedExchange.java index 578a3ee..9232ceb 100644 --- a/core/camel-api/src/main/java/org/apache/camel/ExtendedExchange.java +++ b/core/camel-api/src/main/java/org/apache/camel/ExtendedExchange.java @@ -36,6 +36,11 @@ public interface ExtendedExchange extends Exchange { void reset(); /** + * Sets the created timestamp + */ + void setCreated(long created); + + /** * Sets the endpoint which originated this message exchange. This method should typically only be called by * {@link Endpoint} implementations */ diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/PooledExchangeFactory.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/PooledExchangeFactory.java index 9dff80aa..c70a591 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/PooledExchangeFactory.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/PooledExchangeFactory.java @@ -94,6 +94,9 @@ public class PooledExchangeFactory extends ServiceSupport if (statisticsEnabled) { acquired.incrementAndGet(); } + // the exchange is reused but update the created to now + ExtendedExchange ee = exchange.adapt(ExtendedExchange.class); + ee.setCreated(System.currentTimeMillis()); } if (autoRelease) { // add on completion which will return the exchange when done @@ -129,7 +132,6 @@ public class PooledExchangeFactory extends ServiceSupport public void release(Exchange exchange) { // reset exchange before returning to pool try { - // TODO: reset on pool as this then update created to be up-to-date ExtendedExchange ee = exchange.adapt(ExtendedExchange.class); ee.reset(); diff --git a/core/camel-support/src/main/java/org/apache/camel/support/DefaultExchange.java b/core/camel-support/src/main/java/org/apache/camel/support/DefaultExchange.java index 5ff30c9..ad238b2 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/DefaultExchange.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/DefaultExchange.java @@ -124,17 +124,14 @@ public final class DefaultExchange implements ExtendedExchange { public void reset() { this.properties.clear(); this.exchangeId = null; - // TODO: This is reset time - this.created = System.currentTimeMillis(); + this.created = 0; this.in = null; this.out = null; this.exception = null; this.unitOfWork = null; // reset pattern to original this.pattern = originalPattern; - // do not reset endpoint as it would be the same consumer/endpoint again - // this.fromEndpoint = null; - // this.fromRouteId = null; + // do not reset endpoint/fromRouteId as it would be the same consumer/endpoint again if (this.onCompletions != null) { this.onCompletions.clear(); } @@ -158,6 +155,11 @@ public final class DefaultExchange implements ExtendedExchange { } @Override + public void setCreated(long created) { + this.created = created; + } + + @Override public Exchange copy() { DefaultExchange exchange = new DefaultExchange(this);
