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 2019/05/14 04:29:32 UTC
[camel] 01/07: CAMEL-13503: Camel main - Allow to configure global
and common options ala camel-spring-boot have.
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 109685e53a1ed4f967873e217b056aeba3963f3e
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon May 13 08:24:23 2019 +0200
CAMEL-13503: Camel main - Allow to configure global and common options ala camel-spring-boot have.
---
.../camel/main/MainConfigurationProperties.java | 798 +++++++++++++++++++++
.../java/org/apache/camel/main/MainSupport.java | 8 +-
.../src/main/resources/application.properties | 2 +-
3 files changed, 805 insertions(+), 3 deletions(-)
diff --git a/core/camel-core/src/main/java/org/apache/camel/main/MainConfigurationProperties.java b/core/camel-core/src/main/java/org/apache/camel/main/MainConfigurationProperties.java
new file mode 100644
index 0000000..a3ae86d
--- /dev/null
+++ b/core/camel-core/src/main/java/org/apache/camel/main/MainConfigurationProperties.java
@@ -0,0 +1,798 @@
+/**
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.main;
+
+import org.apache.camel.ManagementStatisticsLevel;
+
+/**
+ * Global configuration for Camel Main to setup context name, stream caching and other global configurations.
+ */
+public class MainConfigurationProperties {
+
+ // TODO: Move javadoc to setter
+
+ /**
+ * Sets the name of the CamelContext.
+ */
+ private String name;
+
+ /**
+ * Timeout in seconds to graceful shutdown Camel.
+ */
+ private int shutdownTimeout = 300;
+
+ /**
+ * Whether Camel should try to suppress logging during shutdown and timeout was triggered,
+ * meaning forced shutdown is happening. And during forced shutdown we want to avoid logging
+ * errors/warnings et all in the logs as a side-effect of the forced timeout.
+ * Notice the suppress is a best effort as there may still be some logs coming
+ * from 3rd party libraries and whatnot, which Camel cannot control.
+ * This option is default false.
+ */
+ private boolean shutdownSuppressLoggingOnTimeout;
+
+ /**
+ * Sets whether to force shutdown of all consumers when a timeout occurred and thus
+ * not all consumers was shutdown within that period.
+ *
+ * You should have good reasons to set this option to false as it means that the routes
+ * keep running and is halted abruptly when CamelContext has been shutdown.
+ */
+ private boolean shutdownNowOnTimeout = true;
+
+ /**
+ * Sets whether routes should be shutdown in reverse or the same order as they where started.
+ */
+ private boolean shutdownRoutesInReverseOrder = true;
+
+ /**
+ * Sets whether to log information about the inflight Exchanges which are still running
+ * during a shutdown which didn't complete without the given timeout.
+ */
+ private boolean shutdownLogInflightExchangesOnTimeout = true;
+
+ /**
+ * Enable JMX in your Camel application.
+ */
+ private boolean jmxEnabled = true;
+
+ /**
+ * Producer template endpoints cache size.
+ */
+ private int producerTemplateCacheSize = 1000;
+
+ /**
+ * Consumer template endpoints cache size.
+ */
+ private int consumerTemplateCacheSize = 1000;
+
+ /**
+ * Directory to load additional configuration files that contains
+ * configuration values that takes precedence over any other configuration.
+ * This can be used to refer to files that may have secret configuration that
+ * has been mounted on the file system for containers.
+ *
+ * You must use either file: or classpath: as prefix to load
+ * from file system or classpath. Then you can specify a pattern to load
+ * from sub directories and a name pattern such as file:/var/app/secret/*.properties
+ */
+ private String fileConfigurations;
+
+ /**
+ * To specify for how long time in seconds to keep running the JVM before automatic terminating the JVM.
+ * You can use this to run Spring Boot for a short while.
+ */
+ private int durationMaxSeconds;
+
+ /**
+ * To specify for how long time in seconds Camel can be idle before automatic terminating the JVM.
+ * You can use this to run Spring Boot for a short while.
+ */
+ private int durationMaxIdleSeconds;
+
+ /**
+ * To specify how many messages to process by Camel before automatic terminating the JVM.
+ * You can use this to run Spring Boot for a short while.
+ */
+ private int durationMaxMessages;
+
+ /**
+ * Is used to limit the maximum length of the logging Camel message bodies. If the message body
+ * is longer than the limit, the log message is clipped. Use -1 to have unlimited length.
+ * Use for example 1000 to log at most 1000 characters.
+ */
+ private int logDebugMaxChars;
+
+ /**
+ * Sets whether stream caching is enabled or not.
+ *
+ * Default is false.
+ */
+ private boolean streamCachingEnabled;
+
+ /**
+ * Sets the stream caching spool (temporary) directory to use for overflow and spooling to disk.
+ *
+ * If no spool directory has been explicit configured, then a temporary directory
+ * is created in the java.io.tmpdir directory.
+ */
+ private String streamCachingSpoolDirectory;
+
+ /**
+ * Sets a stream caching chiper name to use when spooling to disk to write with encryption.
+ * By default the data is not encrypted.
+ */
+ private String streamCachingSpoolChiper;
+
+ /**
+ * Stream caching threshold in bytes when overflow to disk is activated.
+ * The default threshold is 128kb.
+ * Use -1 to disable overflow to disk.
+ */
+ private long streamCachingSpoolThreshold;
+
+ /**
+ * Sets a percentage (1-99) of used heap memory threshold to activate stream caching spooling to disk.
+ */
+ private int streamCachingSpoolUsedHeapMemoryThreshold;
+
+ /**
+ * Sets what the upper bounds should be when streamCachingSpoolUsedHeapMemoryThreshold is in use.
+ */
+ private String streamCachingSpoolUsedHeapMemoryLimit;
+
+ /**
+ * Sets whether if just any of the org.apache.camel.spi.StreamCachingStrategy.SpoolRule rules
+ * returns true then shouldSpoolCache(long) returns true, to allow spooling to disk.
+ * If this option is false, then all the org.apache.camel.spi.StreamCachingStrategy.SpoolRule must
+ * return true.
+ *
+ * The default value is false which means that all the rules must return true.
+ */
+ private boolean streamCachingAnySpoolRules;
+
+ /**
+ * Sets the stream caching buffer size to use when allocating in-memory buffers used for in-memory stream caches.
+ *
+ * The default size is 4096.
+ */
+ private int streamCachingBufferSize;
+
+ /**
+ * Whether to remove stream caching temporary directory when stopping.
+ * This option is default true.
+ */
+ private boolean streamCachingRemoveSpoolDirectoryWhenStopping = true;
+
+ /**
+ * Sets whether stream caching statistics is enabled.
+ */
+ private boolean streamCachingStatisticsEnabled;
+
+ /**
+ * Sets whether tracing is enabled or not.
+ *
+ * Default is false.
+ */
+ private boolean tracing;
+
+ /**
+ * Sets whether message history is enabled or not.
+ *
+ * Default is true.
+ */
+ private boolean messageHistory = true;
+
+ /**
+ * Sets whether log mask is enabled or not.
+ *
+ * Default is false.
+ */
+ private boolean logMask;
+
+ /**
+ * Sets whether to log exhausted message body with message history.
+ *
+ * Default is false.
+ */
+ private boolean logExhaustedMessageBody;
+
+ /**
+ * Sets whether fault handling is enabled or not.
+ *
+ * Default is false.
+ */
+ private boolean handleFault;
+
+ /**
+ * Sets whether the object should automatically start when Camel starts.
+ * Important: Currently only routes can be disabled, as CamelContext's are always started.
+ * Note: When setting auto startup false on CamelContext then that takes precedence
+ * and no routes is started. You would need to start CamelContext explicit using
+ * the org.apache.camel.CamelContext.start() method, to start the context, and then
+ * you would need to start the routes manually using CamelContext.getRouteController().startRoute(String).
+ *
+ * Default is true to always start up.
+ */
+ private boolean autoStartup = true;
+
+ /**
+ * Sets whether to allow access to the original message from Camel's error handler,
+ * or from org.apache.camel.spi.UnitOfWork.getOriginalInMessage().
+ * Turning this off can optimize performance, as defensive copy of the original message is not needed.
+ *
+ * Default is false.
+ */
+ private boolean allowUseOriginalMessage;
+
+ /**
+ * Sets whether endpoint runtime statistics is enabled (gathers runtime usage of each incoming and outgoing endpoints).
+ *
+ * The default value is false.
+ */
+ private boolean endpointRuntimeStatisticsEnabled;
+
+ /**
+ * Whether to enable using data type on Camel messages.
+ *
+ * Data type are automatic turned on if one ore more routes has been explicit configured with input and output types.
+ * Otherwise data type is default off.
+ */
+ private boolean useDataType;
+
+ /**
+ * Set whether breadcrumb is enabled.
+ * The default value is false.
+ */
+ private boolean useBreadcrumb;
+
+ /**
+ * Sets the JMX statistics level
+ * The level can be set to Extended to gather additional information
+ *
+ * The default value is Default.
+ */
+ private ManagementStatisticsLevel jmxManagementStatisticsLevel = ManagementStatisticsLevel.Default;
+
+ /**
+ * The naming pattern for creating the CamelContext JMX management name.
+ *
+ * The default pattern is #name#
+ */
+ private String jmxManagementNamePattern = "#name#";
+
+ /**
+ * Whether JMX connector is created, allowing clients to connect remotely
+ *
+ * The default value is false.
+ */
+ private boolean jmxCreateConnector;
+
+ /**
+ * Tracer should output message body
+ */
+ private boolean traceFormatterShowBody = true;
+
+ /**
+ * Tracer should output message body type
+ */
+ private boolean tracerFormatterShowBodyType = true;
+
+ /**
+ * Tracer should output breadcrumb
+ */
+ private boolean traceFormatterShowBreadCrumb = true;
+
+ /**
+ * Tracer should output exchange id
+ */
+ private boolean traceFormatterShowExchangeId;
+
+ /**
+ * Tracer should output message headers
+ */
+ private boolean traceFormatterShowHeaders = true;
+
+ /**
+ * Tracer should output exchange properties
+ */
+ private boolean traceFormatterShowProperties;
+
+ /**
+ * Tracer should output EIP node
+ */
+ private boolean traceFormatterShowNode = true;
+
+ /**
+ * Tracer should output message exchange pattern (MEP)
+ */
+ private boolean traceFormatterShowExchangePattern = true;
+
+ /**
+ * Tracer should output exception
+ */
+ private boolean traceFormatterShowException = true;
+
+ /**
+ * Tracer should output route id
+ */
+ private boolean traceFormatterShowRouteId = true;
+
+ /**
+ * Tracer maximum length of breadcrumb ids
+ */
+ private Integer tracerFormatterBreadCrumbLength;
+
+ /**
+ * Tracer should output short exchange id
+ */
+ private boolean traceFormatterShowShortExchangeId;
+
+ /**
+ * Tracer maximum length of node
+ */
+ private Integer tracerFormatterNodeLength;
+
+ /**
+ * Tracer maximum characters in total
+ */
+ private Integer tracerFormatterMaxChars = 10000;
+
+ /**
+ * To turn on MDC logging
+ */
+ private boolean useMdcLogging;
+
+ /**
+ * Sets the thread name pattern used for creating the full thread name.
+ *
+ * The default pattern is: Camel (#camelId#) thread ##counter# - #name#
+ *
+ * Where #camelId# is the name of the CamelContext.
+ * and #counter# is a unique incrementing counter.
+ * and #name# is the regular thread name.
+ *
+ * You can also use #longName# which is the long thread name which can includes endpoint parameters etc.
+ */
+ private String threadNamePattern;
+
+ // getter and setters
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getShutdownTimeout() {
+ return shutdownTimeout;
+ }
+
+ public void setShutdownTimeout(int shutdownTimeout) {
+ this.shutdownTimeout = shutdownTimeout;
+ }
+
+ public boolean isShutdownSuppressLoggingOnTimeout() {
+ return shutdownSuppressLoggingOnTimeout;
+ }
+
+ public void setShutdownSuppressLoggingOnTimeout(boolean shutdownSuppressLoggingOnTimeout) {
+ this.shutdownSuppressLoggingOnTimeout = shutdownSuppressLoggingOnTimeout;
+ }
+
+ public boolean isShutdownNowOnTimeout() {
+ return shutdownNowOnTimeout;
+ }
+
+ public void setShutdownNowOnTimeout(boolean shutdownNowOnTimeout) {
+ this.shutdownNowOnTimeout = shutdownNowOnTimeout;
+ }
+
+ public boolean isShutdownRoutesInReverseOrder() {
+ return shutdownRoutesInReverseOrder;
+ }
+
+ public void setShutdownRoutesInReverseOrder(boolean shutdownRoutesInReverseOrder) {
+ this.shutdownRoutesInReverseOrder = shutdownRoutesInReverseOrder;
+ }
+
+ public boolean isShutdownLogInflightExchangesOnTimeout() {
+ return shutdownLogInflightExchangesOnTimeout;
+ }
+
+ public void setShutdownLogInflightExchangesOnTimeout(boolean shutdownLogInflightExchangesOnTimeout) {
+ this.shutdownLogInflightExchangesOnTimeout = shutdownLogInflightExchangesOnTimeout;
+ }
+
+ public boolean isJmxEnabled() {
+ return jmxEnabled;
+ }
+
+ public void setJmxEnabled(boolean jmxEnabled) {
+ this.jmxEnabled = jmxEnabled;
+ }
+
+ public int getProducerTemplateCacheSize() {
+ return producerTemplateCacheSize;
+ }
+
+ public void setProducerTemplateCacheSize(int producerTemplateCacheSize) {
+ this.producerTemplateCacheSize = producerTemplateCacheSize;
+ }
+
+ public int getConsumerTemplateCacheSize() {
+ return consumerTemplateCacheSize;
+ }
+
+ public void setConsumerTemplateCacheSize(int consumerTemplateCacheSize) {
+ this.consumerTemplateCacheSize = consumerTemplateCacheSize;
+ }
+
+ public String getFileConfigurations() {
+ return fileConfigurations;
+ }
+
+ public void setFileConfigurations(String fileConfigurations) {
+ this.fileConfigurations = fileConfigurations;
+ }
+
+ public int getDurationMaxSeconds() {
+ return durationMaxSeconds;
+ }
+
+ public void setDurationMaxSeconds(int durationMaxSeconds) {
+ this.durationMaxSeconds = durationMaxSeconds;
+ }
+
+ public int getDurationMaxIdleSeconds() {
+ return durationMaxIdleSeconds;
+ }
+
+ public void setDurationMaxIdleSeconds(int durationMaxIdleSeconds) {
+ this.durationMaxIdleSeconds = durationMaxIdleSeconds;
+ }
+
+ public int getDurationMaxMessages() {
+ return durationMaxMessages;
+ }
+
+ public void setDurationMaxMessages(int durationMaxMessages) {
+ this.durationMaxMessages = durationMaxMessages;
+ }
+
+ public int getLogDebugMaxChars() {
+ return logDebugMaxChars;
+ }
+
+ public void setLogDebugMaxChars(int logDebugMaxChars) {
+ this.logDebugMaxChars = logDebugMaxChars;
+ }
+
+ public boolean isStreamCachingEnabled() {
+ return streamCachingEnabled;
+ }
+
+ public void setStreamCachingEnabled(boolean streamCachingEnabled) {
+ this.streamCachingEnabled = streamCachingEnabled;
+ }
+
+ public String getStreamCachingSpoolDirectory() {
+ return streamCachingSpoolDirectory;
+ }
+
+ public void setStreamCachingSpoolDirectory(String streamCachingSpoolDirectory) {
+ this.streamCachingSpoolDirectory = streamCachingSpoolDirectory;
+ }
+
+ public String getStreamCachingSpoolChiper() {
+ return streamCachingSpoolChiper;
+ }
+
+ public void setStreamCachingSpoolChiper(String streamCachingSpoolChiper) {
+ this.streamCachingSpoolChiper = streamCachingSpoolChiper;
+ }
+
+ public long getStreamCachingSpoolThreshold() {
+ return streamCachingSpoolThreshold;
+ }
+
+ public void setStreamCachingSpoolThreshold(long streamCachingSpoolThreshold) {
+ this.streamCachingSpoolThreshold = streamCachingSpoolThreshold;
+ }
+
+ public int getStreamCachingSpoolUsedHeapMemoryThreshold() {
+ return streamCachingSpoolUsedHeapMemoryThreshold;
+ }
+
+ public void setStreamCachingSpoolUsedHeapMemoryThreshold(int streamCachingSpoolUsedHeapMemoryThreshold) {
+ this.streamCachingSpoolUsedHeapMemoryThreshold = streamCachingSpoolUsedHeapMemoryThreshold;
+ }
+
+ public String getStreamCachingSpoolUsedHeapMemoryLimit() {
+ return streamCachingSpoolUsedHeapMemoryLimit;
+ }
+
+ public void setStreamCachingSpoolUsedHeapMemoryLimit(String streamCachingSpoolUsedHeapMemoryLimit) {
+ this.streamCachingSpoolUsedHeapMemoryLimit = streamCachingSpoolUsedHeapMemoryLimit;
+ }
+
+ public boolean isStreamCachingAnySpoolRules() {
+ return streamCachingAnySpoolRules;
+ }
+
+ public void setStreamCachingAnySpoolRules(boolean streamCachingAnySpoolRules) {
+ this.streamCachingAnySpoolRules = streamCachingAnySpoolRules;
+ }
+
+ public int getStreamCachingBufferSize() {
+ return streamCachingBufferSize;
+ }
+
+ public void setStreamCachingBufferSize(int streamCachingBufferSize) {
+ this.streamCachingBufferSize = streamCachingBufferSize;
+ }
+
+ public boolean isStreamCachingRemoveSpoolDirectoryWhenStopping() {
+ return streamCachingRemoveSpoolDirectoryWhenStopping;
+ }
+
+ public void setStreamCachingRemoveSpoolDirectoryWhenStopping(boolean streamCachingRemoveSpoolDirectoryWhenStopping) {
+ this.streamCachingRemoveSpoolDirectoryWhenStopping = streamCachingRemoveSpoolDirectoryWhenStopping;
+ }
+
+ public boolean isStreamCachingStatisticsEnabled() {
+ return streamCachingStatisticsEnabled;
+ }
+
+ public void setStreamCachingStatisticsEnabled(boolean streamCachingStatisticsEnabled) {
+ this.streamCachingStatisticsEnabled = streamCachingStatisticsEnabled;
+ }
+
+ public boolean isTracing() {
+ return tracing;
+ }
+
+ public void setTracing(boolean tracing) {
+ this.tracing = tracing;
+ }
+
+ public boolean isMessageHistory() {
+ return messageHistory;
+ }
+
+ public void setMessageHistory(boolean messageHistory) {
+ this.messageHistory = messageHistory;
+ }
+
+ public boolean isLogMask() {
+ return logMask;
+ }
+
+ public void setLogMask(boolean logMask) {
+ this.logMask = logMask;
+ }
+
+ public boolean isLogExhaustedMessageBody() {
+ return logExhaustedMessageBody;
+ }
+
+ public void setLogExhaustedMessageBody(boolean logExhaustedMessageBody) {
+ this.logExhaustedMessageBody = logExhaustedMessageBody;
+ }
+
+ public boolean isHandleFault() {
+ return handleFault;
+ }
+
+ public void setHandleFault(boolean handleFault) {
+ this.handleFault = handleFault;
+ }
+
+ public boolean isAutoStartup() {
+ return autoStartup;
+ }
+
+ public void setAutoStartup(boolean autoStartup) {
+ this.autoStartup = autoStartup;
+ }
+
+ public boolean isAllowUseOriginalMessage() {
+ return allowUseOriginalMessage;
+ }
+
+ public void setAllowUseOriginalMessage(boolean allowUseOriginalMessage) {
+ this.allowUseOriginalMessage = allowUseOriginalMessage;
+ }
+
+ public boolean isEndpointRuntimeStatisticsEnabled() {
+ return endpointRuntimeStatisticsEnabled;
+ }
+
+ public void setEndpointRuntimeStatisticsEnabled(boolean endpointRuntimeStatisticsEnabled) {
+ this.endpointRuntimeStatisticsEnabled = endpointRuntimeStatisticsEnabled;
+ }
+
+ public boolean isUseDataType() {
+ return useDataType;
+ }
+
+ public void setUseDataType(boolean useDataType) {
+ this.useDataType = useDataType;
+ }
+
+ public boolean isUseBreadcrumb() {
+ return useBreadcrumb;
+ }
+
+ public void setUseBreadcrumb(boolean useBreadcrumb) {
+ this.useBreadcrumb = useBreadcrumb;
+ }
+
+ public ManagementStatisticsLevel getJmxManagementStatisticsLevel() {
+ return jmxManagementStatisticsLevel;
+ }
+
+ public void setJmxManagementStatisticsLevel(ManagementStatisticsLevel jmxManagementStatisticsLevel) {
+ this.jmxManagementStatisticsLevel = jmxManagementStatisticsLevel;
+ }
+
+ public String getJmxManagementNamePattern() {
+ return jmxManagementNamePattern;
+ }
+
+ public void setJmxManagementNamePattern(String jmxManagementNamePattern) {
+ this.jmxManagementNamePattern = jmxManagementNamePattern;
+ }
+
+ public boolean isJmxCreateConnector() {
+ return jmxCreateConnector;
+ }
+
+ public void setJmxCreateConnector(boolean jmxCreateConnector) {
+ this.jmxCreateConnector = jmxCreateConnector;
+ }
+
+ public boolean isTraceFormatterShowBody() {
+ return traceFormatterShowBody;
+ }
+
+ public void setTraceFormatterShowBody(boolean traceFormatterShowBody) {
+ this.traceFormatterShowBody = traceFormatterShowBody;
+ }
+
+ public boolean isTracerFormatterShowBodyType() {
+ return tracerFormatterShowBodyType;
+ }
+
+ public void setTracerFormatterShowBodyType(boolean tracerFormatterShowBodyType) {
+ this.tracerFormatterShowBodyType = tracerFormatterShowBodyType;
+ }
+
+ public boolean isTraceFormatterShowBreadCrumb() {
+ return traceFormatterShowBreadCrumb;
+ }
+
+ public void setTraceFormatterShowBreadCrumb(boolean traceFormatterShowBreadCrumb) {
+ this.traceFormatterShowBreadCrumb = traceFormatterShowBreadCrumb;
+ }
+
+ public boolean isTraceFormatterShowExchangeId() {
+ return traceFormatterShowExchangeId;
+ }
+
+ public void setTraceFormatterShowExchangeId(boolean traceFormatterShowExchangeId) {
+ this.traceFormatterShowExchangeId = traceFormatterShowExchangeId;
+ }
+
+ public boolean isTraceFormatterShowHeaders() {
+ return traceFormatterShowHeaders;
+ }
+
+ public void setTraceFormatterShowHeaders(boolean traceFormatterShowHeaders) {
+ this.traceFormatterShowHeaders = traceFormatterShowHeaders;
+ }
+
+ public boolean isTraceFormatterShowProperties() {
+ return traceFormatterShowProperties;
+ }
+
+ public void setTraceFormatterShowProperties(boolean traceFormatterShowProperties) {
+ this.traceFormatterShowProperties = traceFormatterShowProperties;
+ }
+
+ public boolean isTraceFormatterShowNode() {
+ return traceFormatterShowNode;
+ }
+
+ public void setTraceFormatterShowNode(boolean traceFormatterShowNode) {
+ this.traceFormatterShowNode = traceFormatterShowNode;
+ }
+
+ public boolean isTraceFormatterShowExchangePattern() {
+ return traceFormatterShowExchangePattern;
+ }
+
+ public void setTraceFormatterShowExchangePattern(boolean traceFormatterShowExchangePattern) {
+ this.traceFormatterShowExchangePattern = traceFormatterShowExchangePattern;
+ }
+
+ public boolean isTraceFormatterShowException() {
+ return traceFormatterShowException;
+ }
+
+ public void setTraceFormatterShowException(boolean traceFormatterShowException) {
+ this.traceFormatterShowException = traceFormatterShowException;
+ }
+
+ public boolean isTraceFormatterShowRouteId() {
+ return traceFormatterShowRouteId;
+ }
+
+ public void setTraceFormatterShowRouteId(boolean traceFormatterShowRouteId) {
+ this.traceFormatterShowRouteId = traceFormatterShowRouteId;
+ }
+
+ public Integer getTracerFormatterBreadCrumbLength() {
+ return tracerFormatterBreadCrumbLength;
+ }
+
+ public void setTracerFormatterBreadCrumbLength(Integer tracerFormatterBreadCrumbLength) {
+ this.tracerFormatterBreadCrumbLength = tracerFormatterBreadCrumbLength;
+ }
+
+ public boolean isTraceFormatterShowShortExchangeId() {
+ return traceFormatterShowShortExchangeId;
+ }
+
+ public void setTraceFormatterShowShortExchangeId(boolean traceFormatterShowShortExchangeId) {
+ this.traceFormatterShowShortExchangeId = traceFormatterShowShortExchangeId;
+ }
+
+ public Integer getTracerFormatterNodeLength() {
+ return tracerFormatterNodeLength;
+ }
+
+ public void setTracerFormatterNodeLength(Integer tracerFormatterNodeLength) {
+ this.tracerFormatterNodeLength = tracerFormatterNodeLength;
+ }
+
+ public Integer getTracerFormatterMaxChars() {
+ return tracerFormatterMaxChars;
+ }
+
+ public void setTracerFormatterMaxChars(Integer tracerFormatterMaxChars) {
+ this.tracerFormatterMaxChars = tracerFormatterMaxChars;
+ }
+
+ public boolean isUseMdcLogging() {
+ return useMdcLogging;
+ }
+
+ public void setUseMdcLogging(boolean useMdcLogging) {
+ this.useMdcLogging = useMdcLogging;
+ }
+
+ public String getThreadNamePattern() {
+ return threadNamePattern;
+ }
+
+ public void setThreadNamePattern(String threadNamePattern) {
+ this.threadNamePattern = threadNamePattern;
+ }
+}
diff --git a/core/camel-core/src/main/java/org/apache/camel/main/MainSupport.java b/core/camel-core/src/main/java/org/apache/camel/main/MainSupport.java
index c01451b..b974f36 100644
--- a/core/camel-core/src/main/java/org/apache/camel/main/MainSupport.java
+++ b/core/camel-core/src/main/java/org/apache/camel/main/MainSupport.java
@@ -73,19 +73,23 @@ public abstract class MainSupport extends ServiceSupport {
protected final CountDownLatch latch = new CountDownLatch(1);
protected final AtomicBoolean completed = new AtomicBoolean(false);
protected final AtomicInteger exitCode = new AtomicInteger(UNINITIALIZED_EXIT_CODE);
+
+ // TODO: Move these to mainConfigurationProperties (delegate)
protected long duration = -1;
protected long durationIdle = -1;
protected int durationMaxMessages;
protected TimeUnit timeUnit = TimeUnit.SECONDS;
protected boolean trace;
+ protected String fileWatchDirectory;
+ protected boolean fileWatchDirectoryRecursively;
protected CamelContext camelContext;
+ // TODO: Make it possible to configure MainConfigurationProperties from application.properties via camel.main.xxx
+ protected final MainConfigurationProperties mainConfigurationProperties = new MainConfigurationProperties();
protected List<RouteBuilder> routeBuilders = new ArrayList<>();
protected String routeBuilderClasses;
protected List<Object> configurations = new ArrayList<>();
protected String configurationClasses;
- protected String fileWatchDirectory;
- protected boolean fileWatchDirectoryRecursively;
protected ProducerTemplate camelTemplate;
protected boolean hangupInterceptorEnabled = true;
protected int durationHitExitCode = DEFAULT_EXIT_CODE;
diff --git a/examples/camel-example-main/src/main/resources/application.properties b/examples/camel-example-main/src/main/resources/application.properties
index 1c47fff..859f3cb 100644
--- a/examples/camel-example-main/src/main/resources/application.properties
+++ b/examples/camel-example-main/src/main/resources/application.properties
@@ -20,7 +20,7 @@
camel.component.quartz2.start-delayed-seconds = 3
# you can configure whether OS environment should override (=2 which is default) or as fallback (=1)
-### camel.component.properties.environment-variable-mode=1
+camel.component.properties.environment-variable-mode=1
# properties used in the route
myCron = 0/2 * * * * ?