@Override public void closed() { targetCallback.closed(); }
@Override public int sendLargeMessage(MessageReference reference, Message message, ServerConsumer consumer, long bodySize, int deliveryCount) { return targetCallback.sendLargeMessage(reference, message, consumer, bodySize, deliveryCount); }
@Override public int sendLargeMessageContinuation(ServerConsumer consumer, byte[] body, boolean continues, boolean requiresResponse) { return targetCallback.sendLargeMessageContinuation(consumer, body, continues, requiresResponse); }
@Override public void requestProducerCredits(SimpleString address, final int credits) throws Exception { final SimpleString addr = removePrefix(address); PagingStore store = server.getPagingManager().getPageStore(addr); if (store == null) { callback.sendProducerCreditsMessage(credits, address); } else if (!store.checkMemory(new Runnable() { @Override public void run() { callback.sendProducerCreditsMessage(credits, address); } })) { callback.sendProducerCreditsFailMessage(credits, address); } }
int packetSize = callback.sendLargeMessage(ref, currentLargeMessage, ServerConsumerImpl.this, context.getLargeBodySize(), ref.getDeliveryCount()); int packetSize = callback.sendLargeMessageContinuation(ServerConsumerImpl.this, body, positionPendingLargeMessage + localChunkLen < sizePendingLargeMessage, false);
/** * @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); } } }
@Override public void run() { callback.sendProducerCreditsMessage(credits, address); } })) {
@Override public void sendProducerCreditsFailMessage(int credits, SimpleString address) { targetCallback.sendProducerCreditsFailMessage(credits, address); }
@Override public void disconnect() { callback.disconnect(this, getQueue().getName()); }
@Override public void proceedDeliver(MessageReference reference) throws Exception { try { Message message = reference.getMessage(); if (server.hasBrokerMessagePlugins()) { server.callBrokerMessagePlugins(plugin -> plugin.beforeDeliver(this, reference)); } if (message.isLargeMessage() && supportLargeMessage) { if (largeMessageDeliverer == null) { // This can't really happen as handle had already crated the deliverer // instead of throwing an exception in weird cases there is no problem on just go ahead and create it // again here largeMessageDeliverer = new LargeMessageDeliverer((LargeServerMessage) message, reference); } // The deliverer was prepared during handle, as we can't have more than one pending large message // as it would return busy if there is anything pending largeMessageDeliverer.deliver(); } else { deliverStandardMessage(reference, message); } } finally { lockDelivery.readLock().unlock(); callback.afterDelivery(); if (server.hasBrokerMessagePlugins()) { server.callBrokerMessagePlugins(plugin -> plugin.afterDeliver(this, reference)); } } }
synchronized (messageQueue) { if (!iterator.hasNext()) { callback.browserFinished(ServerConsumerImpl.this); break;
@Override public int sendMessage(MessageReference ref, Message message, ServerConsumer consumer, int deliveryCount) { inCall.countDown(); try { callbackSemaphore.acquire(); } catch (InterruptedException e) { inCall.countUp(); return -1; } try { return targetCallback.sendMessage(ref, message, consumer, deliveryCount); } finally { callbackSemaphore.release(); inCall.countUp(); } }
@Override public void sendProducerCreditsMessage(int credits, SimpleString address) { targetCallback.sendProducerCreditsMessage(credits, address); }
/** * 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); }); }