@Override public synchronized boolean stopConsumingAndAddBackToQueue(String elementId, String consumerId) { ElementBeingConsumed element = inProgress.get(elementId); if (element == null || !consumerId.equals(element.consumerId)) { return false; } stopAndReschedule(element); return true; }
@Override public synchronized boolean addToQueue(Element element) { return notStarted.add(new PrioritizedElement(element, getCurrentHighestPriority())); }
protected ElementsTrackingQueue getQueue() { queue = new ElementsTrackingQueue(new InMemoryElementsTracking()); return queue; } }
@Override public synchronized void walkThruElementsBeingConsumed(Walker walker) { List<ElementBeingConsumed> toBeStoppedAndRescheduled = Lists.newArrayList(); for (ElementBeingConsumed element : inProgress.values()) { boolean stopAndReschedule = walker.process(element.element, element.consumerId, element.lastProgressReportTs); if (stopAndReschedule) { toBeStoppedAndRescheduled.add(element); } } for (ElementBeingConsumed element : toBeStoppedAndRescheduled) { stopAndReschedule(element); } }