All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.avanza.astrix.beans.ft.HystrixCommandNamingStrategy Maven / Gradle / Ivy

/*
 * Copyright 2014 Avanza Bank AB
 *
 * 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 com.avanza.astrix.beans.ft;

import com.avanza.astrix.beans.core.AstrixBeanKey;
import com.avanza.astrix.beans.publish.PublishedAstrixBean;
/**
 * 
 * @author Elias Lindholm (elilin)
 *
 */
public interface HystrixCommandNamingStrategy {
	
	/**
	 * @deprecated - As of 0.39.X Astrix uses distinct groups for each bean, this method is never invoked
	 */
	@Deprecated
	default String getCommandKeyName(PublishedAstrixBean beanDefinition) {
		return getCommandKeyName(beanDefinition.getBeanKey());
	}
	
	/**
	 * @deprecated - As of 0.39.X Astrix uses distinct groups for each bean, this method is never invoked
	 */
	@Deprecated
	default String getGroupKeyName(PublishedAstrixBean beanDefinition) {
		return getCommandKeyName(beanDefinition.getBeanKey());
	}
	
	/**
	 * Returns the Hystrix command key name used to protect invocations to a given Astrix bean.
	 * 
	 * Default implementation uses the toString() representation of the AstrixBeanKey.
	 * 
	 * NOTE: commandKeyNames must be unique, i.e there must be a one-to-one mapping between an AstrixBeanKey and
	 * the commandKeyName. Otherwise the fault-tolerance layer might behave in
	 * unexpected ways when different beans are protected by the same HystrixCommand.
	 * 
	 * @param astrixBeanKey
	 * @return
	 */
	default String getCommandKeyName(AstrixBeanKey astrixBeanKey) {
		return astrixBeanKey.toString();
	}
	
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy