| /* |
| * 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 |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * 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.spring.boot; |
| |
| import org.apache.camel.LoggingLevel; |
| import org.apache.camel.ManagementMBeansLevel; |
| import org.apache.camel.ManagementStatisticsLevel; |
| import org.apache.camel.StartupSummaryLevel; |
| import org.apache.camel.main.DefaultConfigurationProperties; |
| import org.springframework.boot.context.properties.ConfigurationProperties; |
| |
| import java.util.Map; |
| |
| @ConfigurationProperties(prefix = "camel.springboot") |
| public class CamelConfigurationProperties extends DefaultConfigurationProperties<CamelConfigurationProperties> { |
| |
| // Spring Boot only Properties |
| // --------------------------- |
| |
| /** |
| * Whether to use the main run controller to ensure the Spring-Boot application |
| * keeps running until being stopped or the JVM terminated. |
| * You typically only need this if you run Spring-Boot standalone. |
| * If you run Spring-Boot with spring-boot-starter-web then the web container keeps the JVM running. |
| */ |
| private boolean mainRunController; |
| |
| /** |
| * Whether to include non-singleton beans (prototypes) when scanning for RouteBuilder instances. |
| * By default only singleton beans is included in the context scan. |
| */ |
| private boolean includeNonSingletons; |
| |
| /** |
| * Whether to log a WARN if Camel on Spring Boot was immediately shutdown after starting which |
| * very likely is because there is no JVM thread to keep the application running. |
| */ |
| private boolean warnOnEarlyShutdown = true; |
| |
| // Default Properties via camel-main |
| // --------------------------------- |
| |
| // IMPORTANT: Must include the options from DefaultConfigurationProperties as spring boot apt compiler |
| // needs to grab the documentation from the javadoc on the field. |
| |
| /** |
| * Sets the name of the CamelContext. |
| */ |
| private String name; |
| |
| /** |
| * Sets the description (intended for humans) of the Camel application. |
| */ |
| private String description; |
| |
| /** |
| * Controls the level of information logged during startup (and shutdown) of CamelContext. |
| */ |
| private StartupSummaryLevel startupSummaryLevel = StartupSummaryLevel.Default; |
| |
| /** |
| * 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. |
| * |
| * This requires to enable the option inflightRepositoryExchangeEnabled. |
| */ |
| private boolean shutdownLogInflightExchangesOnTimeout = true; |
| |
| /** |
| * UUID generator to use. |
| * |
| * default (32 bytes), short (16 bytes), classic (32 bytes or longer), simple (long incrementing counter), off |
| * (turned off for exchanges - only intended for performance profiling) |
| */ |
| private String uuidGenerator = "default"; |
| |
| /** |
| * 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; |
| |
| /** |
| * Whether camel-k style modeline is also enabled when not using camel-k. Enabling this allows to use a camel-k like |
| * experience by being able to configure various settings using modeline directly in your route source code. |
| */ |
| private boolean modeline; |
| |
| /** |
| * Whether to enable developer console (requires camel-console on classpath). |
| * |
| * The developer console is only for assisting during development. This is NOT for production usage. |
| */ |
| private boolean devConsoleEnabled; |
| |
| /** |
| * Whether to load custom type converters by scanning classpath. |
| * This is used for backwards compatibility with Camel 2.x. |
| * Its recommended to migrate to use fast type converter loading |
| * by setting <tt>@Converter(generateLoader = true)</tt> on your custom |
| * type converter classes. |
| */ |
| private boolean loadTypeConverters = true; |
| |
| /** |
| * Whether to load custom health checks by scanning classpath. |
| */ |
| private boolean loadHealthChecks; |
| |
| /** |
| * 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; |
| |
| /** |
| * Used for filtering routes matching the given pattern, which follows the following rules: |
| * |
| * - Match by route id |
| * - Match by route input endpoint uri |
| * |
| * The matching is using exact match, by wildcard and regular expression. |
| * |
| * For example to only include routes which starts with foo in their route id's, use: include=foo* |
| * And to exclude routes which starts from JMS endpoints, use: exclude=jms:* |
| * |
| * Multiple patterns can be separated by comma, for example to exclude both foo and bar routes, use: exclude=foo*,bar* |
| * |
| * Exclude takes precedence over include. |
| */ |
| private String routeFilterIncludePattern; |
| |
| /** |
| * Used for filtering routes matching the given pattern, which follows the following rules: |
| * |
| * - Match by route id |
| * - Match by route input endpoint uri |
| * |
| * The matching is using exact match, by wildcard and regular expression. |
| * |
| * For example to only include routes which starts with foo in their route id's, use: include=foo* |
| * And to exclude routes which starts from JMS endpoints, use: exclude=jms:* |
| * |
| * Multiple patterns can be separated by comma, for example to exclude both foo and bar routes, use: exclude=foo*,bar* |
| * |
| * Exclude takes precedence over include. |
| */ |
| private String routeFilterExcludePattern; |
| |
| /** |
| * Used for enabling automatic routes reloading. If enabled then Camel will watch for file changes in the given |
| * reload directory, and trigger reloading routes if files are changed. |
| */ |
| private boolean routesReloadEnabled; |
| |
| /** |
| * Directory to scan (incl subdirectories) for route changes. Camel cannot scan the classpath, so this must be |
| * configured to a file directory. Development with Maven as build tool, you can configure the directory to be |
| * src/main/resources to scan for Camel routes in XML or YAML files. |
| */ |
| private String routesReloadDirectory = "src/main/resources"; |
| |
| /** |
| * Whether the directory to scan should include sub directories. |
| * |
| * Depending on the number of sub directories, then this can cause the JVM to startup slower as Camel uses the JDK |
| * file-watch service to scan for file changes. |
| */ |
| private boolean routesReloadDirectoryRecursive; |
| |
| /** |
| * Used for inclusive filtering of routes from directories. |
| * |
| * Typical used for specifying to accept routes in XML or YAML files. |
| * Multiple patterns can be specified separated by comma. |
| */ |
| private String routesReloadPattern = "camel/*"; |
| |
| /** |
| * When reloading routes should all existing routes be stopped and removed. |
| * |
| * By default, Camel will stop and remove all existing routes before reloading routes. This ensures that only the |
| * reloaded routes will be active. If disabled then only routes with the same route id is updated, and any existing |
| * routes are continued to run. |
| */ |
| private boolean routesReloadRemoveAllRoutes = true; |
| |
| /** |
| * Whether to restart max duration when routes are reloaded. For example if max duration is 60 seconds, and a route |
| * is reloaded after 25 seconds, then this will restart the count and wait 60 seconds again. |
| */ |
| private boolean routesReloadRestartDuration = true; |
| |
| /** |
| * 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; |
| |
| /** |
| * Controls whether the Camel application should shutdown the JVM, or stop all routes, when duration max is |
| * triggered. |
| */ |
| private String durationMaxAction = "shutdown"; |
| |
| /** |
| * 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. |
| * |
| * While stream types (like StreamSource, InputStream and Reader) are commonly used in messaging for performance |
| * reasons, they also have an important drawback: they can only be read once. In order to be able to work with |
| * message content multiple times, the stream needs to be cached. |
| * |
| * Streams are cached in memory only (by default). |
| * |
| * If streamCachingSpoolEnabled=true, then, for large stream messages (over 128 KB by default) will be cached in a |
| * temporary file instead, and Camel will handle deleting the temporary file once the cached stream is no longer |
| * necessary. |
| * |
| * Default is true. |
| */ |
| private boolean streamCachingEnabled = true; |
| |
| /** |
| * To enable stream caching spooling to disk. This means, for large stream messages (over 128 KB by default) will be cached in a |
| * temporary file instead, and Camel will handle deleting the temporary file once the cached stream is no longer |
| * necessary. |
| * |
| * Default is false. |
| */ |
| private boolean streamCachingSpoolEnabled; |
| |
| /** |
| * 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 cipher name to use when spooling to disk to write with encryption. |
| * By default the data is not encrypted. |
| */ |
| private String streamCachingSpoolCipher; |
| |
| /** |
| * 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 type converter statistics is enabled. |
| * |
| * By default the type converter utilization statistics is disabled. |
| * Notice: If enabled then there is a slight performance impact under very heavy load. |
| */ |
| private boolean typeConverterStatisticsEnabled; |
| |
| /** |
| * Sets whether debugging is enabled or not. |
| * |
| * Default is false. |
| */ |
| private boolean debugging; |
| |
| /** |
| * Sets whether backlog tracing is enabled or not. |
| * |
| * Default is false. |
| */ |
| private boolean backlogTracing; |
| |
| /** |
| * Sets whether tracing is enabled or not. |
| * |
| * Default is false. |
| */ |
| private boolean tracing; |
| |
| /** |
| * Tracing pattern to match which node EIPs to trace. |
| * For example to match all To EIP nodes, use to*. |
| * The pattern matches by node and route id's |
| * Multiple patterns can be separated by comma. |
| */ |
| private String tracingPattern; |
| |
| /** |
| * To use a custom tracing logging format. |
| * |
| * The default format (arrow, routeId, label) is: %-4.4s [%-12.12s] [%-33.33s] |
| */ |
| private String tracingLoggingFormat; |
| |
| /** |
| * Sets whether message history is enabled or not. |
| * |
| * Default is true. |
| */ |
| private boolean messageHistory = true; |
| |
| /** |
| * Whether to capture precise source location:line-number for all EIPs in Camel routes. |
| * |
| * Enabling this will impact parsing Java based routes (also Groovy, Kotlin, etc.) on startup as this uses JDK |
| * StackTraceElement to calculate the location from the Camel route, which comes with a performance cost. This only |
| * impact startup, not the performance of the routes at runtime. |
| */ |
| private boolean sourceLocationEnabled; |
| |
| /** |
| * 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 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; |
| |
| /** |
| * Whether to use case sensitive or insensitive headers. |
| * |
| * Important: When using case sensitive (this is set to false). |
| * Then the map is case sensitive which means headers such as content-type and Content-Type are |
| * two different keys which can be a problem for some protocols such as HTTP based, which rely on case insensitive headers. |
| * However case sensitive implementations can yield faster performance. Therefore use case sensitive implementation with care. |
| * |
| * Default is true. |
| */ |
| private boolean caseInsensitiveHeaders = true; |
| |
| /** |
| * Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as |
| * autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets |
| * configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection |
| * factories, AWS Clients, etc. |
| * |
| * Default is true. |
| */ |
| private boolean autowiredEnabled = true; |
| |
| /** |
| * Sets whether the inflight repository should allow browsing each inflight exchange. |
| * |
| * This is by default disabled as there is a very slight performance overhead when enabled. |
| */ |
| private boolean inflightRepositoryBrowseEnabled; |
| |
| /** |
| * Sets whether endpoint runtime statistics is enabled (gathers runtime usage of each incoming and outgoing endpoints). |
| * |
| * The default value is false. |
| */ |
| private boolean endpointRuntimeStatisticsEnabled; |
| |
| /** |
| * Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while |
| * the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and |
| * handled by the routing Error Handler. |
| * <p/> |
| * By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, |
| * that will be logged at WARN/ERROR level and ignored. |
| * |
| * The default value is false. |
| */ |
| public boolean endpointBridgeErrorHandler; |
| |
| /** |
| * Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities. |
| * |
| * The default value is false. |
| */ |
| public boolean endpointBasicPropertyBinding; |
| |
| /** |
| * Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup |
| * in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then |
| * the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed |
| * then creating and starting the producer may take a little time and prolong the total processing time of the processing. |
| * |
| * The default value is false. |
| */ |
| private boolean endpointLazyStartProducer; |
| |
| /** |
| * Whether to enable using data type on Camel messages. |
| * |
| * Data type are automatic turned on if one or 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; |
| |
| /** |
| * Can be used to turn off bean post processing. |
| * |
| * Be careful to turn this off, as this means that beans that use Camel annotations such as |
| * org.apache.camel.EndpointInject, org.apache.camel.ProducerTemplate, |
| * org.apache.camel.Produce, org.apache.camel.Consume etc will not be injected and in use. |
| * |
| * Turning this off should only be done if you are sure you do not use any of these Camel features. |
| * |
| * Not all runtimes allow turning this off (such as camel-blueprint or camel-cdi with XML). |
| * |
| * The default value is true (enabled). |
| */ |
| private boolean beanPostProcessorEnabled = true; |
| |
| /** |
| * Whether its allowed to add new routes after Camel has been started. |
| * This is enabled by default. |
| * Setting this to false allows Camel to do some internal optimizations to reduce memory footprint. |
| * <p/> |
| * This should only be done on a JVM with a single Camel application (microservice like camel-main, camel-quarkus, camel-spring-boot). |
| * As this affects the entire JVM where Camel JARs are on the classpath. |
| */ |
| private boolean allowAddingNewRoutes = true; |
| |
| /** |
| * Sets the JMX statistics level |
| * The level can be set to Extended to gather additional information |
| * |
| * The default value is Default. |
| */ |
| private ManagementMBeansLevel jmxManagementMBeansLevel = ManagementMBeansLevel.Default; |
| |
| /** |
| * 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#"; |
| |
| /** |
| * If dumping is enabled then Camel will during startup dump all loaded routes (incl rests and route templates) |
| * represented as XML DSL into the log. This is intended for trouble shooting or to assist during development. |
| * |
| * Sensitive information that may be configured in the route endpoints could potentially be included in the dump |
| * output and is therefore not recommended to be used for production usage. |
| * |
| * This requires to have camel-xml-jaxb on the classpath to be able to dump the routes as XML. |
| */ |
| private boolean dumpRoutes; |
| |
| /** |
| * Sets global options that can be referenced in the camel context |
| * |
| * Important: This has nothing to do with property placeholders, and is just a plain set of key/value pairs |
| * which are used to configure global options on CamelContext, such as a maximum debug logging length etc. |
| */ |
| private Map<String, String> globalOptions; |
| |
| /** |
| * Whether to include timestamps for all emitted Camel Events. Enabling this allows to know fine-grained at what |
| * time each event was emitted, which can be used for reporting to report exactly the time of the events. This is by |
| * default false to avoid the overhead of including this information. |
| */ |
| private boolean camelEventsTimestampEnabled; |
| |
| /** |
| * To turn on MDC logging |
| */ |
| private boolean useMdcLogging; |
| |
| /** |
| * Sets the pattern used for determining which custom MDC keys to propagate during message routing when |
| * the routing engine continues routing asynchronously for the given message. Setting this pattern to * will |
| * propagate all custom keys. Or setting the pattern to foo*,bar* will propagate any keys starting with |
| * either foo or bar. |
| * Notice that a set of standard Camel MDC keys are always propagated which starts with camel. as key name. |
| * |
| * The match rules are applied in this order (case insensitive): |
| * |
| * 1. exact match, returns true |
| * 2. wildcard match (pattern ends with a * and the name starts with the pattern), returns true |
| * 3. regular expression match, returns true |
| * 4. otherwise returns false |
| */ |
| private String mdcLoggingKeysPattern; |
| |
| /** |
| * 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; |
| |
| /** |
| * Sets whether bean introspection uses extended statistics. |
| * The default is false. |
| */ |
| private boolean beanIntrospectionExtendedStatistics; |
| |
| /** |
| * Sets the logging level used by bean introspection, logging activity of its usage. |
| * The default is TRACE. |
| */ |
| private LoggingLevel beanIntrospectionLoggingLevel; |
| |
| /** |
| * Whether the routes collector is enabled or not. |
| * |
| * When enabled Camel will auto-discover routes (RouteBuilder instances from the registry and also load additional |
| * routes from the file system). |
| * |
| * The routes collector is default enabled. |
| */ |
| private boolean routesCollectorEnabled = true; |
| |
| /** |
| * Used for inclusive filtering of routes from directories. The exclusive filtering takes precedence over inclusive |
| * filtering. The pattern is using Ant-path style pattern. |
| * |
| * Multiple patterns can be specified separated by comma, as example, to include all the routes from a directory |
| * whose name contains foo use: **/*foo*. |
| */ |
| private String routesIncludePattern = "classpath:camel/*,classpath:camel-template/*,classpath:camel-rest/*"; |
| |
| /** |
| * Used for exclusive filtering of routes from directories. The exclusive filtering takes precedence over inclusive |
| * filtering. The pattern is using Ant-path style pattern. |
| * |
| * Multiple patterns can be specified separated by comma, as example, to exclude all the routes from a directory |
| * whose name contains foo use: **/*foo*. |
| */ |
| private String routesExcludePattern; |
| |
| /** |
| * Used for inclusive filtering RouteBuilder classes which are collected from the registry or via classpath |
| * scanning. The exclusive filtering takes precedence over inclusive filtering. The pattern is using Ant-path style |
| * pattern. Multiple patterns can be specified separated by comma. |
| * |
| * Multiple patterns can be specified separated by comma. For example to include all classes starting with Foo use: |
| * **/Foo* To include all routes form a specific package use: com/mycompany/foo/* To include all routes |
| * form a specific package and its sub-packages use double wildcards: com/mycompany/foo/** And to include |
| * all routes from two specific packages use: com/mycompany/foo/*,com/mycompany/stuff/* |
| */ |
| private String javaRoutesIncludePattern; |
| |
| /** |
| * Used for exclusive filtering RouteBuilder classes which are collected from the registry or via classpath |
| * scanning. The exclusive filtering takes precedence over inclusive filtering. The pattern is using Ant-path style |
| * pattern. Multiple patterns can be specified separated by comma. |
| * |
| * For example to exclude all classes starting with Bar use: **/Bar* To exclude all routes form a |
| * specific package use: com/mycompany/bar/* To exclude all routes form a specific package and its sub-packages |
| * use double wildcards: com/mycompany/bar/** And to exclude all routes from two specific packages use: |
| * com/mycompany/bar/*,com/mycompany/stuff/* |
| */ |
| private String javaRoutesExcludePattern; |
| |
| /** |
| * Sets the logging level used for logging route activity (such as starting and stopping routes). The default |
| * logging level is DEBUG. |
| */ |
| @Deprecated |
| private LoggingLevel routeControllerLoggingLevel; |
| |
| /** |
| * To enable using supervising route controller which allows Camel to startup |
| * and then the controller takes care of starting the routes in a safe manner. |
| * |
| * This can be used when you want to startup Camel despite a route may otherwise |
| * fail fast during startup and cause Camel to fail to startup as well. By delegating |
| * the route startup to the supervising route controller then it manages the startup |
| * using a background thread. The controller allows to be configured with various |
| * settings to attempt to restart failing routes. |
| */ |
| boolean routeControllerSuperviseEnabled; |
| |
| /** |
| * The number of threads used by the route controller scheduled thread pool that are used for restarting |
| * routes. The pool uses 1 thread by default, but you can increase this to allow the controller |
| * to concurrently attempt to restart multiple routes in case more than one route has problems |
| * starting. |
| */ |
| int routeControllerThreadPoolSize = 1; |
| |
| /** |
| * Initial delay in milli seconds before the route controller starts, after |
| * CamelContext has been started. |
| */ |
| long routeControllerInitialDelay; |
| |
| /** |
| * Backoff delay in millis when restarting a route that failed to startup. |
| */ |
| long routeControllerBackOffDelay = 2000; |
| |
| /** |
| * Backoff maximum delay in millis when restarting a route that failed to startup. |
| */ |
| long routeControllerBackOffMaxDelay; |
| |
| /** |
| * Backoff maximum elapsed time in millis, after which the backoff should be considered |
| * exhausted and no more attempts should be made. |
| */ |
| long routeControllerBackOffMaxElapsedTime; |
| |
| /** |
| * Backoff maximum number of attempts to restart a route that failed to startup. |
| * When this threshold has been exceeded then the controller will give up |
| * attempting to restart the route, and the route will remain as stopped. |
| */ |
| long routeControllerBackOffMaxAttempts; |
| |
| /** |
| * Backoff multiplier to use for exponential backoff. This is used to extend the delay |
| * between restart attempts. |
| */ |
| double routeControllerBackOffMultiplier = 1.0; |
| |
| /** |
| * Pattern for filtering routes to be excluded as supervised. |
| * |
| * The pattern is matching on route id, and endpoint uri for the route. |
| * Multiple patterns can be separated by comma. |
| * |
| * For example to exclude all JMS routes, you can say <tt>jms:*</tt>. |
| * And to exclude routes with specific route ids <tt>mySpecialRoute,myOtherSpecialRoute</tt>. |
| * The pattern supports wildcards and uses the matcher from |
| * org.apache.camel.support.PatternHelper#matchPattern. |
| */ |
| String routeControllerIncludeRoutes; |
| |
| /** |
| * Pattern for filtering routes to be included as supervised. |
| * |
| * The pattern is matching on route id, and endpoint uri for the route. |
| * Multiple patterns can be separated by comma. |
| * |
| * For example to include all kafka routes, you can say <tt>kafka:*</tt>. |
| * And to include routes with specific route ids <tt>myRoute,myOtherRoute</tt>. |
| * The pattern supports wildcards and uses the matcher from |
| * org.apache.camel.support.PatternHelper#matchPattern. |
| */ |
| String routeControllerExcludeRoutes; |
| |
| /** |
| * Whether to mark the route as unhealthy (down) when all restarting attempts (backoff) have failed and the route is |
| * not successfully started and the route manager is giving up. |
| * |
| * Setting this to true allows health checks to know about this and can report the Camel application as DOWN. |
| * |
| * The default is false. |
| */ |
| private boolean routeControllerUnhealthyOnExhausted; |
| |
| /** |
| * Experimental: Configure the context to be lightweight. |
| * This will trigger some optimizations and memory reduction options. |
| * Lightweight context has some limitations. |
| * At this moment, dynamic endpoint destinations are not supported. |
| */ |
| private boolean lightweight; |
| |
| /** |
| * Whether to eager load a common set of Camel classes that would otherwise first be loaded on processing the first |
| * message. By eager loading these classes then the JVM has already loaded the classes during build phase, which |
| * allows Camel to process the first message faster. |
| */ |
| private boolean eagerClassloading; |
| |
| /** |
| * Controls whether to pool (reuse) exchanges or create new exchanges (prototype). Using pooled will reduce JVM |
| * garbage collection overhead by avoiding to re-create Exchange instances per message each consumer receives. The |
| * default is prototype mode. |
| */ |
| private String exchangeFactory = "default"; |
| |
| /** |
| * The capacity the pool (for each consumer) uses for storing exchanges. The default capacity is 100. |
| */ |
| private int exchangeFactoryCapacity = 100; |
| |
| /** |
| * Configures whether statistics is enabled on exchange factory. |
| */ |
| private boolean exchangeFactoryStatisticsEnabled; |
| |
| /** |
| * To use startup recorder for capturing execution time during starting Camel. The recorder can be one of: false (or |
| * off), logging, java-flight-recorder (or jfr). |
| */ |
| private String startupRecorder; |
| |
| /** |
| * To filter our sub steps at a maximum depth. |
| * |
| * Use -1 for no maximum. Use 0 for no sub steps. Use 1 for max 1 sub step, and so forth. |
| * |
| * The default is -1. |
| */ |
| private int startupRecorderMaxDepth = -1; |
| |
| /** |
| * To enable Java Flight Recorder to start a recording and automatic dump the recording to disk after startup is |
| * complete. |
| * |
| * This requires that camel-jfr is on the classpath, and to enable this option. |
| */ |
| private boolean startupRecorderRecording; |
| |
| /** |
| * To use a specific Java Flight Recorder profile configuration, such as default or profile. |
| * |
| * The default is default. |
| */ |
| private String startupRecorderProfile = "default"; |
| |
| /** |
| * How long time to run the startup recorder. |
| * |
| * Use 0 (default) to keep the recorder running until the JVM is exited. |
| * Use -1 to stop the recorder right after Camel has been started (to only focus on potential Camel startup performance bottlenecks) |
| * Use a positive value to keep recording for N seconds. |
| * |
| * When the recorder is stopped then the recording is auto saved to disk |
| * (note: save to disk can be disabled by setting startupRecorderDir to false) |
| */ |
| private long startupRecorderDuration; |
| |
| /** |
| * Directory to store the recording. By default the user home directory will be used. Use false to turn off saving |
| * recording to disk. |
| */ |
| private String startupRecorderDir; |
| |
| // Getters & setters |
| // ----------------- |
| |
| public boolean isMainRunController() { |
| return mainRunController; |
| } |
| |
| public void setMainRunController(boolean mainRunController) { |
| this.mainRunController = mainRunController; |
| } |
| |
| public boolean isIncludeNonSingletons() { |
| return includeNonSingletons; |
| } |
| |
| public void setIncludeNonSingletons(boolean includeNonSingletons) { |
| this.includeNonSingletons = includeNonSingletons; |
| } |
| |
| public boolean isWarnOnEarlyShutdown() { |
| return warnOnEarlyShutdown; |
| } |
| |
| public void setWarnOnEarlyShutdown(boolean warnOnEarlyShutdown) { |
| this.warnOnEarlyShutdown = warnOnEarlyShutdown; |
| } |
| |
| } |