@SuppressWarnings({"SynchronizationOnLocalVariableOrMethodParameter"}) private void drainDeferredDeliveryQueue(final MessageQueue queue) { try { synchronized (queue) { if (deferredQueue.containsKey(queue)) { final List<Message> deferredMessages = deferredQueue.get(queue); final Iterator<Message> dmIter = deferredMessages.iterator(); Message m; while (dmIter.hasNext()) { if ((m = dmIter.next()).hasPart(MessageParts.PriorityProcessing.toString())) { queue.offer(m); dmIter.remove(); } } for (final Message message : deferredQueue.get(queue)) { queue.offer(message); } deferredQueue.remove(queue); } } } catch (IOException e) { throw new RuntimeException("error draining deferred delivery queue", e); } }
private void enqueueForDelivery(final MessageQueue queue, final Message message) { try { if (queue != null && isAnyoneListening(queue, message.getSubject())) { queue.offer(message); } else { if (queue != null && !queue.isInitialized()) { deferDelivery(queue, message); } else { delayOrFail(message, new Runnable() { @Override public void run() { enqueueForDelivery(queue, message); } }); } } } catch (QueueUnavailableException e) { closeQueue(queue); } catch (IOException e) { throw new RuntimeException("failed to enqueue message for delivery", e); } }
@SuppressWarnings({"SynchronizationOnLocalVariableOrMethodParameter"}) private void drainDeferredDeliveryQueue(final MessageQueue queue) { try { synchronized (queue) { if (deferredQueue.containsKey(queue)) { final List<Message> deferredMessages = deferredQueue.get(queue); final Iterator<Message> dmIter = deferredMessages.iterator(); Message m; while (dmIter.hasNext()) { if ((m = dmIter.next()).hasPart(MessageParts.PriorityProcessing.toString())) { queue.offer(m); dmIter.remove(); } } for (final Message message : deferredQueue.get(queue)) { queue.offer(message); } deferredQueue.remove(queue); } } } catch (IOException e) { throw new RuntimeException("error draining deferred delivery queue", e); } }
private void enqueueForDelivery(final MessageQueue queue, final Message message) { try { if (queue != null && isAnyoneListening(queue, message.getSubject())) { queue.offer(message); } else { if (queue != null && !queue.isInitialized()) { deferDelivery(queue, message); } else { delayOrFail(message, new Runnable() { @Override public void run() { enqueueForDelivery(queue, message); } }); } } } catch (QueueUnavailableException e) { closeQueue(queue); } catch (IOException e) { throw new RuntimeException("failed to enqueue message for delivery", e); } }