Class LoadbalanceEndpoint

  • All Implemented Interfaces:
    Endpoint, ManagedLifecycle, Nameable, PropertyInclude, SynapseArtifact
    Direct Known Subclasses:
    DynamicLoadbalanceEndpoint, SALoadbalanceEndpoint

    public class LoadbalanceEndpoint
    extends AbstractEndpoint
    A Load balance endpoint contains multiple child endpoints. It routes messages according to the specified load balancing algorithm. This will assume that all immediate child endpoints are identical in state (state is replicated) or state is not maintained at those endpoints. If an endpoint is failing, the failed endpoint is marked as inactive and the message sent to the next endpoint obtained using the load balancing algorithm. If all the endpoints have failed and a parent endpoint is available, onChildEndpointFail(...) method of parent endpoint is called. If a parent is not available, this will call next FaultHandler for the message context.
    • Constructor Detail

      • LoadbalanceEndpoint

        public LoadbalanceEndpoint()
    • Method Detail

      • init

        public void init​(SynapseEnvironment synapseEnvironment)
        Description copied from interface: ManagedLifecycle
        This method should implement the initialization of the implemented parts of the configuration.
        Specified by:
        init in interface ManagedLifecycle
        Overrides:
        init in class AbstractEndpoint
        Parameters:
        synapseEnvironment - SynapseEnvironment to be used for initialization
      • isInitialized

        public boolean isInitialized()
        NOTE: Override org.apache.synapse.endpoints.AbstractEndpoint#isInitialized() to ensure return true only after LB Endpoint get fully initialized. This is done to avoid super.isInitialized return true while LoadbalanceEndpoint initializing during request burst *at server startup*
        Specified by:
        isInitialized in interface Endpoint
        Overrides:
        isInitialized in class AbstractEndpoint
        Returns:
      • send

        public void send​(MessageContext synCtx)
        Description copied from interface: Endpoint
        Sends the message context according to an endpoint specific behavior.
        Specified by:
        send in interface Endpoint
        Overrides:
        send in class AbstractEndpoint
        Parameters:
        synCtx - MessageContext to be sent.
      • readyToSend

        public boolean readyToSend()
        If this endpoint is in inactive state, checks if all immediate child endpoints are still failed. If so returns false. If at least one child endpoint is in active state, sets this endpoint's state to active and returns true. As this a sessionless load balancing endpoint having one active child endpoint is enough to consider this as active.
        Specified by:
        readyToSend in interface Endpoint
        Overrides:
        readyToSend in class AbstractEndpoint
        Returns:
        true if active. false otherwise.
      • onChildEndpointFail

        public void onChildEndpointFail​(Endpoint endpoint,
                                        MessageContext synMessageContext)
        Description copied from interface: Endpoint
        Endpoints that contain other endpoints should implement this method. It will be called if a child endpoint causes an exception. Action to be taken on such failure is up to the implementation. But it is good practice to first try addressing the issue. If it can't be addressed propagate the exception to parent endpoint by calling parent endpoint's onChildEndpointFail(...) method.
        Specified by:
        onChildEndpointFail in interface Endpoint
        Overrides:
        onChildEndpointFail in class AbstractEndpoint
        Parameters:
        endpoint - The child endpoint which caused the exception.
        synMessageContext - MessageContext that was used in the failed attempt.
      • isFailover

        public boolean isFailover()
      • isBuildMessageAtt

        public boolean isBuildMessageAtt()
      • setFailover

        public void setFailover​(boolean failover)
      • setMembers

        public void setMembers​(List<org.apache.axis2.clustering.Member> members)
      • getMembers

        public List<org.apache.axis2.clustering.Member> getMembers()
      • startApplicationMembershipTimer

        public void startApplicationMembershipTimer()
      • setBuildMessageAtt

        public void setBuildMessageAtt​(boolean build)
      • setBuildMessageAttAvailable

        public void setBuildMessageAttAvailable​(boolean available)