Package org.apache.activemq.usage
Class Usage<T extends Usage>
- java.lang.Object
-
- org.apache.activemq.usage.Usage<T>
-
- All Implemented Interfaces:
Service
- Direct Known Subclasses:
JobSchedulerUsage,MemoryUsage,PercentLimitUsage
public abstract class Usage<T extends Usage> extends Object implements Service
Used to keep track of how much of something is being used so that a productive working set usage can be controlled. Main use case is manage memory usage.
-
-
Field Summary
Fields Modifier and Type Field Description protected Stringnameprotected Tparentprotected intpercentUsageprotected ReentrantReadWriteLockusageLockprotected ConditionwaitForSpaceCondition
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected voidaddChild(T child)voidaddUsageListener(UsageListener listener)protected intcaclPercentUsage()ThreadPoolExecutorgetExecutor()longgetLimit()UsageCapacitygetLimiter()StringgetName()intgetNumUsageListeners()TgetParent()intgetPercentUsage()intgetPercentUsageMinDelta()intgetPollingTime()longgetUsage()floatgetUsagePortion()booleanisFull()booleanisFull(int highWaterMark)booleanisStarted()booleannotifyCallbackWhenNotFull(Runnable callback)protected voidonLimitChange()protected voidremoveChild(T child)voidremoveUsageListener(UsageListener listener)protected abstract longretrieveUsage()voidsetExecutor(ThreadPoolExecutor executor)voidsetLimit(long limit)Sets the memory limit in bytes.voidsetLimiter(UsageCapacity limiter)voidsetName(String name)voidsetParent(T parent)protected voidsetPercentUsage(int value)voidsetPercentUsageMinDelta(int percentUsageMinDelta)Sets the minimum number of percentage points the usage has to change before a UsageListener event is fired by the manager.voidsetPollingTime(int pollingTime)voidsetUsagePortion(float usagePortion)voidstart()voidstop()StringtoString()voidwaitForSpace()booleanwaitForSpace(long timeout)booleanwaitForSpace(long timeout, int highWaterMark)
-
-
-
Field Detail
-
usageLock
protected final ReentrantReadWriteLock usageLock
-
waitForSpaceCondition
protected final Condition waitForSpaceCondition
-
percentUsage
protected int percentUsage
-
name
protected String name
-
-
Method Detail
-
retrieveUsage
protected abstract long retrieveUsage()
-
waitForSpace
public void waitForSpace() throws InterruptedException- Throws:
InterruptedException
-
waitForSpace
public boolean waitForSpace(long timeout) throws InterruptedException- Throws:
InterruptedException
-
waitForSpace
public boolean waitForSpace(long timeout, int highWaterMark) throws InterruptedException- Parameters:
timeout-- Returns:
- true if space
- Throws:
InterruptedException
-
isFull
public boolean isFull()
-
isFull
public boolean isFull(int highWaterMark)
-
addUsageListener
public void addUsageListener(UsageListener listener)
-
removeUsageListener
public void removeUsageListener(UsageListener listener)
-
getNumUsageListeners
public int getNumUsageListeners()
-
getLimit
public long getLimit()
-
setLimit
public void setLimit(long limit)
Sets the memory limit in bytes. Setting the limit in bytes will set the usagePortion to 0 since the UsageManager is not going to be portion based off the parent. When set using Xbean, values of the form "20 Mb", "1024kb", and "1g" can be used
-
onLimitChange
protected void onLimitChange()
-
getUsagePortion
public float getUsagePortion()
-
setUsagePortion
public void setUsagePortion(float usagePortion)
-
getPercentUsage
public int getPercentUsage()
-
getPercentUsageMinDelta
public int getPercentUsageMinDelta()
-
setPercentUsageMinDelta
public void setPercentUsageMinDelta(int percentUsageMinDelta)
Sets the minimum number of percentage points the usage has to change before a UsageListener event is fired by the manager.- Parameters:
percentUsageMinDelta-
-
getUsage
public long getUsage()
-
setPercentUsage
protected void setPercentUsage(int value)
-
caclPercentUsage
protected int caclPercentUsage()
-
getName
public String getName()
-
addChild
protected void addChild(T child)
-
removeChild
protected void removeChild(T child)
-
notifyCallbackWhenNotFull
public boolean notifyCallbackWhenNotFull(Runnable callback)
- Parameters:
callback-- Returns:
- true if the UsageManager was full. The callback will only be called if this method returns true.
-
getLimiter
public UsageCapacity getLimiter()
- Returns:
- the limiter
-
setLimiter
public void setLimiter(UsageCapacity limiter)
- Parameters:
limiter- the limiter to set
-
getPollingTime
public int getPollingTime()
- Returns:
- the pollingTime
-
setPollingTime
public void setPollingTime(int pollingTime)
- Parameters:
pollingTime- the pollingTime to set
-
setName
public void setName(String name)
-
getParent
public T getParent()
-
setParent
public void setParent(T parent)
-
setExecutor
public void setExecutor(ThreadPoolExecutor executor)
-
getExecutor
public ThreadPoolExecutor getExecutor()
-
isStarted
public boolean isStarted()
-
-