package org.distributeme.core.routing.blacklisting;
import org.distributeme.core.ClientSideCallContext;
import org.distributeme.core.routing.GenericRouterConfiguration;
/**
* Interface to implement own strategies for blacklisting. Blacklisting is used from routers to
* avoid calls to faulty to service instances.
*
* Created by rboehling on 2/21/17.
*/
public interface BlacklistingStrategy {
/**
* Returns the blacklist decision for given service instanceID.
*/
boolean isBlacklisted(String instanceId);
/**
* Called by the router when a call to service instance failed.
* @param clientSideCallContext
*/
void notifyCallFailed(ClientSideCallContext clientSideCallContext);
/**
* Called by the router upon configuration change.
* @param configuration
*/
void setConfiguration(GenericRouterConfiguration configuration);
}