/** * @param ref * @param message */ private void deliverStandardMessage(final MessageReference ref, Message message) throws ActiveMQException { applyPrefixForLegacyConsumer(message); int packetSize = callback.sendMessage(ref, message, ServerConsumerImpl.this, ref.getDeliveryCount()); if (availableCredits != null) { availableCredits.addAndGet(-packetSize); if (logger.isTraceEnabled()) { logger.trace(this + "::FlowControl::delivery standard taking " + packetSize + " from credits, available now is " + availableCredits); } } }
/** * Prompt delivery and send a "forced delivery" message to the consumer. * <p> * When the consumer receives such a "forced delivery" message, it discards it and knows that * there are no other messages to be delivered. */ @Override public void forceDelivery(final long sequence) { forceDelivery(sequence, () -> { Message forcedDeliveryMessage = new CoreMessage(storageManager.generateID(), 50); MessageReference reference = MessageReference.Factory.createReference(forcedDeliveryMessage, messageQueue); reference.setDeliveryCount(0); forcedDeliveryMessage.putLongProperty(ClientConsumerImpl.FORCED_DELIVERY_MESSAGE, sequence); forcedDeliveryMessage.setAddress(messageQueue.getName()); applyPrefixForLegacyConsumer(forcedDeliveryMessage); callback.sendMessage(reference, forcedDeliveryMessage, ServerConsumerImpl.this, 0); }); }