Copyright 2016 Netflix, Inc.

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.
/** * Copyright 2016 Netflix, Inc. * <p/> * 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 * <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 com.netflix.hystrix.config; import com.netflix.hystrix.HystrixCollapserKey; import com.netflix.hystrix.HystrixCollapserProperties; public class HystrixCollapserConfiguration { private final HystrixCollapserKey collapserKey; private final int maxRequestsInBatch; private final int timerDelayInMilliseconds; private final boolean requestCacheEnabled; private final CollapserMetricsConfig collapserMetricsConfig; public HystrixCollapserConfiguration(HystrixCollapserKey collapserKey, int maxRequestsInBatch, int timerDelayInMilliseconds, boolean requestCacheEnabled, CollapserMetricsConfig collapserMetricsConfig) { this.collapserKey = collapserKey; this.maxRequestsInBatch = maxRequestsInBatch; this.timerDelayInMilliseconds = timerDelayInMilliseconds; this.requestCacheEnabled = requestCacheEnabled; this.collapserMetricsConfig = collapserMetricsConfig; } public static HystrixCollapserConfiguration sample(HystrixCollapserKey collapserKey, HystrixCollapserProperties collapserProperties) { CollapserMetricsConfig collapserMetricsConfig = new CollapserMetricsConfig( collapserProperties.metricsRollingPercentileWindowBuckets().get(), collapserProperties.metricsRollingPercentileWindowInMilliseconds().get(), collapserProperties.metricsRollingPercentileEnabled().get(), collapserProperties.metricsRollingStatisticalWindowBuckets().get(), collapserProperties.metricsRollingStatisticalWindowInMilliseconds().get() ); return new HystrixCollapserConfiguration( collapserKey, collapserProperties.maxRequestsInBatch().get(), collapserProperties.timerDelayInMilliseconds().get(), collapserProperties.requestCacheEnabled().get(), collapserMetricsConfig ); } public HystrixCollapserKey getCollapserKey() { return collapserKey; } public int getMaxRequestsInBatch() { return maxRequestsInBatch; } public int getTimerDelayInMilliseconds() { return timerDelayInMilliseconds; } public boolean isRequestCacheEnabled() { return requestCacheEnabled; } public CollapserMetricsConfig getCollapserMetricsConfig() { return collapserMetricsConfig; } public static class CollapserMetricsConfig { private final int rollingPercentileNumberOfBuckets; private final int rollingPercentileBucketSizeInMilliseconds; private final boolean rollingPercentileEnabled; private final int rollingCounterNumberOfBuckets; private final int rollingCounterBucketSizeInMilliseconds; public CollapserMetricsConfig(int rollingPercentileNumberOfBuckets, int rollingPercentileBucketSizeInMilliseconds, boolean rollingPercentileEnabled, int rollingCounterNumberOfBuckets, int rollingCounterBucketSizeInMilliseconds) { this.rollingPercentileNumberOfBuckets = rollingCounterNumberOfBuckets; this.rollingPercentileBucketSizeInMilliseconds = rollingPercentileBucketSizeInMilliseconds; this.rollingPercentileEnabled = rollingPercentileEnabled; this.rollingCounterNumberOfBuckets = rollingCounterNumberOfBuckets; this.rollingCounterBucketSizeInMilliseconds = rollingCounterBucketSizeInMilliseconds; } public int getRollingPercentileNumberOfBuckets() { return rollingPercentileNumberOfBuckets; } public int getRollingPercentileBucketSizeInMilliseconds() { return rollingPercentileBucketSizeInMilliseconds; } public boolean isRollingPercentileEnabled() { return rollingPercentileEnabled; } public int getRollingCounterNumberOfBuckets() { return rollingCounterNumberOfBuckets; } public int getRollingCounterBucketSizeInMilliseconds() { return rollingCounterBucketSizeInMilliseconds; } } }