@Override public void done() { deliverAsync(); } });
public void deliverNow() { deliverAsync(); flushExecutor(); }
@Override public void forceDelivery() { if (pageSubscription != null && pageSubscription.isPaging()) { if (logger.isTraceEnabled()) { logger.trace("Force delivery scheduling depage"); } scheduleDepage(false); } if (logger.isTraceEnabled()) { logger.trace("Force delivery delivering async"); } deliverAsync(); }
private synchronized void doInternalPoll() { int added = 0; MessageReference ref; while ((ref = intermediateMessageReferences.poll()) != null) { internalAddTail(ref); if (!ref.isPaged()) { messagesAdded.incrementAndGet(); } if (added++ > MAX_DELIVERIES_IN_LOOP) { // if we just keep polling from the intermediate we could starve in case there's a sustained load deliverAsync(); return; } } }
@Override public synchronized void resume() { paused = false; if (pauseStatusRecord >= 0) { try { storageManager.deleteQueueStatus(pauseStatusRecord); } catch (Exception e) { ActiveMQServerLogger.LOGGER.unableToResumeQueue(e); } pauseStatusRecord = -1; } deliverAsync(); }
private void internalAddRedistributor(final ArtemisExecutor executor) { // create the redistributor only once if there are no local consumers if (consumers.isEmpty() && redistributor == null) { if (logger.isTraceEnabled()) { logger.trace("QueueImpl::Adding redistributor on queue " + this.toString()); } redistributor = (new ConsumerHolder(new Redistributor(this, storageManager, postOffice, executor, QueueImpl.REDISTRIBUTOR_BATCH_SIZE))); redistributor.consumer.start(); deliverAsync(); } }
@Override public synchronized void addRedistributor(final long delay) { clearRedistributorFuture(); if (redistributor != null) { // Just prompt delivery deliverAsync(); } if (delay > 0) { if (consumers.isEmpty()) { DelayedAddRedistributor dar = new DelayedAddRedistributor(executor); redistributorFuture = scheduledExecutor.schedule(dar, delay, TimeUnit.MILLISECONDS); } } else { internalAddRedistributor(executor); } }
@Override public void addHead(final List<MessageReference> refs, boolean scheduling) { enterCritical(CRITICAL_PATH_ADD_HEAD); synchronized (this) { try { for (MessageReference ref : refs) { addHead(ref, scheduling); } resetAllIterators(); deliverAsync(); } finally { leaveCritical(CRITICAL_PATH_ADD_HEAD); } } }
deliverAsync(); } finally { leaveCritical(CRITICAL_PATH_ADD_TAIL);