Class WeightedRoundRobin
- java.lang.Object
-
- org.apache.synapse.endpoints.algorithms.WeightedRoundRobin
-
- All Implemented Interfaces:
Cloneable
,LoadbalanceAlgorithm
,ManagedLifecycle
public class WeightedRoundRobin extends Object implements LoadbalanceAlgorithm, ManagedLifecycle
This algorithm sends messages based on the weights of the endpoints. For example we may have 3 endpoints with following weights.- Epr 1: 5
- Epr 2: 3
- Epr 3: 2
This algorithm will send the first 5 messages through Epr1, next 3 messages through Epr2 and next 2 messages with Epr3. Then algorithm moves again to the first endpoint and cycle continues.
-
-
Constructor Summary
Constructors Constructor Description WeightedRoundRobin()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
changeWeight(int pos, int weight)
LoadbalanceAlgorithm
clone()
void
destroy()
This method should implement the destroying of the implemented parts of the configuration.int[]
getCurrentWeights()
String
getName()
Return the name of the load balancing algorithmorg.apache.axis2.clustering.Member
getNextApplicationMember(AlgorithmContext algorithmContext)
This method returns the next member to which the request has been sent to, according to the algorithm implementation.Endpoint
getNextEndpoint(MessageContext synapseMessageContext, AlgorithmContext algorithmContext)
This method returns the next node according to the algorithm implementation.void
init(SynapseEnvironment se)
This method should implement the initialization of the implemented parts of the configuration.void
reset(AlgorithmContext algorithmContext)
Resets the algorithm to its initial position.void
setApplicationMembers(List<org.apache.axis2.clustering.Member> members)
we are not supporting membersvoid
setEndpoints(List<Endpoint> endpoints)
Set the endpointsvoid
setLoadBalanceEndpoint(Endpoint endpoint)
Set the loadbalance endpoint
-
-
-
Method Detail
-
setApplicationMembers
public void setApplicationMembers(List<org.apache.axis2.clustering.Member> members)
we are not supporting members- Specified by:
setApplicationMembers
in interfaceLoadbalanceAlgorithm
- Parameters:
members
- The application members
-
setEndpoints
public void setEndpoints(List<Endpoint> endpoints)
Description copied from interface:LoadbalanceAlgorithm
Set the endpoints- Specified by:
setEndpoints
in interfaceLoadbalanceAlgorithm
- Parameters:
endpoints
- The endpoints
-
setLoadBalanceEndpoint
public void setLoadBalanceEndpoint(Endpoint endpoint)
Description copied from interface:LoadbalanceAlgorithm
Set the loadbalance endpoint- Specified by:
setLoadBalanceEndpoint
in interfaceLoadbalanceAlgorithm
- Parameters:
endpoint
- the endpoint which uses this algorithm
-
getNextEndpoint
public Endpoint getNextEndpoint(MessageContext synapseMessageContext, AlgorithmContext algorithmContext)
Description copied from interface:LoadbalanceAlgorithm
This method returns the next node according to the algorithm implementation.- Specified by:
getNextEndpoint
in interfaceLoadbalanceAlgorithm
- Parameters:
synapseMessageContext
- SynapseMessageContext of the current messagealgorithmContext
- The context in which holds run time states related to the algorithm- Returns:
- Next node for directing the message
-
getNextApplicationMember
public org.apache.axis2.clustering.Member getNextApplicationMember(AlgorithmContext algorithmContext)
Description copied from interface:LoadbalanceAlgorithm
This method returns the next member to which the request has been sent to, according to the algorithm implementation.- Specified by:
getNextApplicationMember
in interfaceLoadbalanceAlgorithm
- Parameters:
algorithmContext
- The context in which holds run time states related to the algorithm- Returns:
- Next application member to which the request has to be sent to
-
reset
public void reset(AlgorithmContext algorithmContext)
Description copied from interface:LoadbalanceAlgorithm
Resets the algorithm to its initial position. Initial position depends on the implementation.- Specified by:
reset
in interfaceLoadbalanceAlgorithm
- Parameters:
algorithmContext
- The context in which holds run time states related to the algorithm
-
getName
public String getName()
Description copied from interface:LoadbalanceAlgorithm
Return the name of the load balancing algorithm- Specified by:
getName
in interfaceLoadbalanceAlgorithm
- Returns:
- the name of the algorithm implemented
-
clone
public LoadbalanceAlgorithm clone()
- Specified by:
clone
in interfaceLoadbalanceAlgorithm
- Overrides:
clone
in classObject
-
init
public void init(SynapseEnvironment se)
Description copied from interface:ManagedLifecycle
This method should implement the initialization of the implemented parts of the configuration.- Specified by:
init
in interfaceManagedLifecycle
- Parameters:
se
- SynapseEnvironment to be used for initialization
-
destroy
public void destroy()
Description copied from interface:ManagedLifecycle
This method should implement the destroying of the implemented parts of the configuration.- Specified by:
destroy
in interfaceManagedLifecycle
-
changeWeight
public void changeWeight(int pos, int weight)
-
getCurrentWeights
public int[] getCurrentWeights()
-
-