Class LoadBalancer
java.lang.Object
desmoj.core.simulator.NamedObject
desmoj.core.simulator.ModelComponent
desmoj.core.simulator.Schedulable
desmoj.core.simulator.Entity
cambio.simulator.entities.patterns.LoadBalancer
public final class LoadBalancer
extends desmoj.core.simulator.Entity
Wrapper Class for
ILoadBalancingStrategy
to encapsulate common behavior around it. E.g. capture last chosen
MicroserviceInstance or distribution of messages- Author:
- Lion Wagner
-
Field Summary
Fields inherited from class desmoj.core.simulator.Schedulable
_schedule
-
Constructor Summary
ConstructorsConstructorDescriptionLoadBalancer
(desmoj.core.simulator.Model model, String name, boolean showInTrace, ILoadBalancingStrategy loadBalancingStrategy) Creates a new instance of a loadbalancer that will use the given strategy. -
Method Summary
Modifier and TypeMethodDescriptiongetNextInstance
(Collection<MicroserviceInstance> instances) Retrieves the next candidate for receiving a request, consulting itsILoadBalancingStrategy
.Methods inherited from class desmoj.core.simulator.Entity
clone, generateTraceForScheduling, getIdentNumber, getQueueingPriority, getQueues, getScheduledEvents, isEqual, isLarger, isLargerOrEqual, isNotEqual, isQueued, isSimProcess, isSmaller, isSmallerOrEqual, schedule, schedule, schedule, schedule, schedule, schedule, schedule, schedule, schedule, scheduleAfter, scheduleAfter, scheduleAfter, scheduleBefore, scheduleBefore, scheduleBefore, schedulePreempt, schedulePreempt, schedulePreempt, setQueueingPriority
Methods inherited from class desmoj.core.simulator.Schedulable
assignReporter, cancel, getCorrespondingReportable, isCurrent, isScheduled, rename, reSchedule, reSchedule, reSchedulePreempt, scheduledNext, setCorrespondingReportable
Methods inherited from class desmoj.core.simulator.ModelComponent
current, currentEntity, currentEntityAll, currentEvent, currentlySendDebugNotes, currentlySendTraceNotes, currentModel, currentSimProcess, debugIsOn, debugOff, debugOn, getModel, isExperimentCompatible, isModelCompatible, presentTime, sendDebugNote, sendMessage, sendTraceNote, sendWarning, skipTraceNote, skipTraceNote, traceIsOn, traceOff, traceOn
Methods inherited from class desmoj.core.simulator.NamedObject
getName, getQuotedName, toString
-
Constructor Details
-
LoadBalancer
public LoadBalancer(desmoj.core.simulator.Model model, String name, boolean showInTrace, ILoadBalancingStrategy loadBalancingStrategy) Creates a new instance of a loadbalancer that will use the given strategy.
-
-
Method Details
-
getNextInstance
public MicroserviceInstance getNextInstance(Collection<MicroserviceInstance> instances) throws NoInstanceAvailableException Retrieves the next candidate for receiving a request, consulting itsILoadBalancingStrategy
.- Returns:
- a potentially reachable
MicroserviceInstance
- Throws:
NoInstanceAvailableException
- if noMicroserviceInstance
is available to send requests to.
-
getLastChosenInstance
-
getLoadBalancingStrategy
-