You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2020/01/27 12:34:57 UTC
[camel] 03/04: CAMEL-14354: camel-core optimize
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 7acff9d6201da53d6746a4dc88d8169c7b489b02
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Jan 27 13:27:05 2020 +0100
CAMEL-14354: camel-core optimize
---
.../main/java/org/apache/camel/spi/UnitOfWorkFactory.java | 9 ++++++++-
.../apache/camel/impl/engine/DefaultUnitOfWorkFactory.java | 14 ++++++++++++--
.../org/apache/camel/processor/CamelInternalProcessor.java | 3 +++
3 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/UnitOfWorkFactory.java b/core/camel-api/src/main/java/org/apache/camel/spi/UnitOfWorkFactory.java
index 9af44dc..64b2429 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/UnitOfWorkFactory.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/UnitOfWorkFactory.java
@@ -16,12 +16,14 @@
*/
package org.apache.camel.spi;
+import org.apache.camel.AfterPropertiesConfigured;
+import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
/**
* Factory to create {@link org.apache.camel.spi.UnitOfWork}.
*/
-public interface UnitOfWorkFactory {
+public interface UnitOfWorkFactory extends AfterPropertiesConfigured {
/**
* Creates a new {@link UnitOfWork}
@@ -30,5 +32,10 @@ public interface UnitOfWorkFactory {
* @return the created {@link UnitOfWork}
*/
UnitOfWork createUnitOfWork(Exchange exchange);
+
+ @Override
+ default void afterPropertiesConfigured(CamelContext camelContext) {
+ // noop
+ }
}
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWorkFactory.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWorkFactory.java
index a2af28e..69e4f93 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWorkFactory.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWorkFactory.java
@@ -16,6 +16,7 @@
*/
package org.apache.camel.impl.engine;
+import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.spi.UnitOfWork;
import org.apache.camel.spi.UnitOfWorkFactory;
@@ -25,15 +26,24 @@ import org.apache.camel.spi.UnitOfWorkFactory;
*/
public class DefaultUnitOfWorkFactory implements UnitOfWorkFactory {
+ private boolean usedMDCLogging;
+ private String mdcLoggingKeysPattern;
+
@Override
public UnitOfWork createUnitOfWork(Exchange exchange) {
UnitOfWork answer;
- if (exchange.getContext().isUseMDCLogging()) {
- answer = new MDCUnitOfWork(exchange, exchange.getContext().getMDCLoggingKeysPattern());
+ if (usedMDCLogging) {
+ answer = new MDCUnitOfWork(exchange, mdcLoggingKeysPattern);
} else {
answer = new DefaultUnitOfWork(exchange);
}
return answer;
}
+ @Override
+ public void afterPropertiesConfigured(CamelContext camelContext) {
+ usedMDCLogging = camelContext.isUseMDCLogging() != null && camelContext.isUseMDCLogging();
+ mdcLoggingKeysPattern = camelContext.getMDCLoggingKeysPattern();
+ }
+
}
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java b/core/camel-base/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
index 8c7dcb1..c1e4d3b 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
@@ -60,6 +60,7 @@ import org.apache.camel.support.OrderedComparator;
import org.apache.camel.support.SynchronizationAdapter;
import org.apache.camel.support.UnitOfWorkHelper;
import org.apache.camel.support.processor.DelegateAsyncProcessor;
+import org.apache.camel.support.service.ServiceHelper;
import org.apache.camel.util.StopWatch;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -595,6 +596,8 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
if (routeContext != null) {
this.routeId = routeContext.getRouteId();
this.uowFactory = routeContext.getCamelContext().adapt(ExtendedCamelContext.class).getUnitOfWorkFactory();
+ // optimize uow factory to initialize it early and once per advice
+ this.uowFactory.afterPropertiesConfigured(routeContext.getCamelContext());
}
}