@Override public void noMessagesAvailable() { if(isAutoClose() && getState() != State.CLOSED) { close(); confirmAutoClose(); } }
public void confirmAutoClose() { ProtocolOutputConverter converter = getChannel().getConnection().getProtocolOutputConverter(); converter.confirmConsumerAutoClose(getChannel().getChannelId(), getConsumerTag()); }
@Override public String toString() { return "ConsumerTarget_0_8[channel=" + _channel + ", consumerTag=" + _consumerTag + ", session=" + getConnection().getRemoteAddressString() + "]"; }
target = ConsumerTarget_0_8.createGetAckTarget(this, AMQShortString.EMPTY_STRING, null, INFINITE_CREDIT_CREDIT_MANAGER, getDeliveryMethod); target = ConsumerTarget_0_8.createGetNoAckTarget(this, AMQShortString.EMPTY_STRING, null, INFINITE_CREDIT_CREDIT_MANAGER, getDeliveryMethod); target.updateNotifyWorkDesired(); boolean canCallSendNextMessageAgain; do canCallSendNextMessageAgain = target.sendNextMessage(); target.close(); return getDeliveryMethod.hasDeliveredMessage();
if(arguments != null && Boolean.TRUE.equals(arguments.get(AMQPFilterTypes.NO_CONSUME.getValue()))) target = ConsumerTarget_0_8.createBrowserTarget(this, tag, arguments, INFINITE_CREDIT_CREDIT_MANAGER, multiQueue); target = ConsumerTarget_0_8.createAckTarget(this, tag, arguments, _creditManager, multiQueue); options.add(ConsumerOption.ACQUIRES); options.add(ConsumerOption.SEES_REQUEUES); target = ConsumerTarget_0_8.createNoAckTarget(this, tag, arguments, INFINITE_CREDIT_CREDIT_MANAGER, multiQueue); options.add(ConsumerOption.ACQUIRES); options, priority); target.updateNotifyWorkDesired();
@Override final protected void doSend(final MessageInstanceConsumer consumer, final MessageInstance entry, final boolean batch) { ServerMessage serverMessage = entry.getMessage(); MessageConverter<ServerMessage<?>, AMQMessage> messageConverter = null; final AMQMessage msg; if(serverMessage instanceof AMQMessage) { msg = (AMQMessage) serverMessage; } else { messageConverter = MessageConverterRegistry.getConverter((Class<ServerMessage<?>>) serverMessage.getClass(), AMQMessage.class); msg = messageConverter.convert(serverMessage, getConnection().getAddressSpace()); } try { doSendInternal(consumer, entry, msg, batch); } finally { if(messageConverter != null) { messageConverter.dispose(msg); } } }
/** * Unsubscribe a consumer from a queue. * @param consumerTag * @return true if the consumerTag had a mapped queue that could be unregistered. */ private boolean unsubscribeConsumer(AMQShortString consumerTag) { if (LOGGER.isDebugEnabled()) { LOGGER.debug("Unsubscribing consumer '{}' on channel {}", consumerTag, this); } ConsumerTarget_0_8 target = _tag2SubscriptionTargetMap.remove(consumerTag); if (target != null) { target.close(); return true; } else { LOGGER.warn("Attempt to unsubscribe consumer with tag '" + consumerTag + "' which is not registered."); } return false; }
@Override public long deliverToClient(final ConsumerTarget_0_8 target, final AMQMessage message, final InstanceProperties props, final long deliveryTag) { long size = _protocolOutputConverter.writeDeliver(message, props, _channelId, deliveryTag, target.getConsumerTag()); registerMessageDelivered(size); if (target.getChannel().isTransactional()) { registerTransactedMessageDelivered(); } return size; }