/* * Copyright 2014-2015 the original author or authors. * * Licensed 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.springframework.integration.config; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.context.annotation.Import; import org.springframework.integration.support.management.IntegrationManagement; import org.springframework.integration.support.management.IntegrationManagementConfigurer; /** * Enables default configuring of management in Spring Integration components in an existing application. * * <p>The resulting {@link IntegrationManagementConfigurer} * bean is defined under the name {@code integrationManagementConfigurer}. * * @author Gary Russell * @since 4.2 */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Import(IntegrationManagementConfiguration.class) public @interface EnableIntegrationManagement { /** * A list of simple patterns for component names for which message counts will be * enabled (defaults to '*'). Enables message * counting (`sendCount`, `errorCount`, `receiveCount`) for those components that * support counters (channels, message handlers, etc). This is the initial setting * only, individual components can have counts enabled/disabled at runtime. May be * overridden by an entry in {@link #statsEnabled() statsEnabled} which is additional * functionality over simple counts. If a pattern starts with `!`, counts are disabled * for matches. For components that match multiple patterns, the first pattern wins. * Disabling counts at runtime also disables stats. * Defaults to no components, unless JMX is enabled in which case, defaults to all * components. Overrides {@link #defaultCountsEnabled()} for matching bean names. * @return the patterns. */ String[] countsEnabled() default "*"; /** * A list of simple patterns for component names for which message statistics will be * enabled (response times, rates etc), as well as counts (a positive match here * overrides {@link #countsEnabled() countsEnabled}, you can't have statistics without * counts). (defaults to '*'). Enables * statistics for those components that support statistics (channels - when sending, * message handlers, etc). This is the initial setting only, individual components can * have stats enabled/disabled at runtime. If a pattern starts with `!`, stats (and * counts) are disabled for matches. Note: this means that '!foo' here will disable * stats and counts for 'foo' even if counts are enabled for 'foo' in * {@link #countsEnabled() countsEnabled}. For components * that match multiple patterns, the first pattern wins. Enabling stats at runtime * also enables counts. * Defaults to no components, unless JMX is enabled in which case, defaults to all * components. * @return the patterns. */ String[] statsEnabled() default "*"; /** * The default setting for enabling counts when a bean name is not matched by * {@link #countsEnabled() countsEnabled}. * @return the value; false by default, or true when JMX is enabled. */ String defaultCountsEnabled() default "false"; /** * The default setting for enabling statistics when a bean name is not matched by * {@link #statsEnabled() statsEnabled}. * @return the value; false by default, or true when JMX is enabled. */ String defaultStatsEnabled() default "false"; /** * Use to disable all logging in the main message flow in framework components. When 'false', such logging will be * skipped, regardless of logging level. When 'true', the logging is controlled as normal by the logging * subsystem log level configuration. * <p> * It has been found that in high-volume messaging environments, calls to methods such as * {@code logger.isDebuggingEnabled()} can be quite expensive and account for an inordinate amount of CPU * time. * <p> * Set this to false to disable logging by default in all framework components that implement * {@link IntegrationManagement} (channels, message handlers etc). This turns off logging such as * "PreSend on channel", "Received message" etc. * <p> * After the context is initialized, individual components can have their setting changed by invoking * {@link IntegrationManagement#setLoggingEnabled(boolean)}. * @return the value; true by default. */ String defaultLoggingEnabled() default "true"; /** * The bean name of a {@code MetricsFactory}. The {@code DefaultMetricsFactory} is used * if omitted. * @return the bean name. */ String metricsFactory() default ""; }