public Integer getMessageCount() { return _queue.getQueueDepthMessages(); }
@Override public long getTotalDepthOfQueuesMessages() { long total = 0; final Collection<Queue> queues = getChildren(Queue.class); for(Queue q : queues) { total += q.getQueueDepthMessages(); } return total; }
@Override public boolean notifyIfNecessary(ServerMessage<?> msg, Queue<?> queue, QueueNotificationListener listener) { int msgCount; final long maximumMessageCount = queue.getAlertThresholdQueueDepthMessages(); if (maximumMessageCount!= 0 && (msgCount = queue.getQueueDepthMessages()) >= maximumMessageCount) { String notificationMsg = msgCount + ": Maximum count on queue threshold ("+ maximumMessageCount +") breached."; logNotification(this, queue, notificationMsg); listener.notifyClients(this, queue, notificationMsg); return true; } return false; } },
@Override public long deliverToClient(final ConsumerTarget_0_8 target, final AMQMessage message, final InstanceProperties props, final long deliveryTag) { int queueSize = _queue instanceof Queue ? ((Queue<?>)_queue).getQueueDepthMessages() : 0; long size = _connection.getProtocolOutputConverter().writeGetOk(message, props, AMQChannel.this.getChannelId(), deliveryTag, queueSize); _deliveredMessage = true; return size; }
private void flowNewEntryToDiskIfNecessary(final QueueEntry newlyEnqueued, final long maximumQueueDepthBytes, final long maximumQueueDepthMessages) { final long queueDepthBytes = _queue.getQueueDepthBytes(); final long queueDepthMessages = _queue.getQueueDepthMessages(); if ((maximumQueueDepthBytes >= 0L && queueDepthBytes > maximumQueueDepthBytes) || (maximumQueueDepthMessages >= 0L && queueDepthMessages > maximumQueueDepthMessages)) { ServerMessage message = newlyEnqueued.getMessage(); if (message != null) { flowToDisk(message); } } }
private void checkOverfull(final long maximumQueueDepthBytes, final long maximumQueueDepthMessages) { final long queueDepthBytes = _queue.getQueueDepthBytes(); final long queueDepthMessages = _queue.getQueueDepthMessages(); if ((maximumQueueDepthBytes >= 0L && queueDepthBytes > maximumQueueDepthBytes) || (maximumQueueDepthMessages >= 0L && queueDepthMessages > maximumQueueDepthMessages)) { Subject subject = Subject.getSubject(AccessController.getContext()); Set<SessionPrincipal> sessionPrincipals = subject.getPrincipals(SessionPrincipal.class); if (!sessionPrincipals.isEmpty()) { SessionPrincipal sessionPrincipal = sessionPrincipals.iterator().next(); if (sessionPrincipal != null) { if (_overfullReported.compareAndSet(false, true)) { _eventLogger.message(_queue.getLogSubject(), QueueMessages.OVERFULL(queueDepthBytes, maximumQueueDepthBytes, queueDepthMessages, maximumQueueDepthMessages)); } final AMQPSession<?, ?> session = sessionPrincipal.getSession(); _blockedSessions.add(session); session.block(_queue); } } } }
private void checkReject(final ServerMessage<?> newMessage) throws MessageUnacceptableException { final long maximumQueueDepthMessages = _queue.getMaximumQueueDepthMessages(); final long maximumQueueDepthBytes = _queue.getMaximumQueueDepthBytes(); final int queueDepthMessages = _queue.getQueueDepthMessages(); final long queueDepthBytes = _queue.getQueueDepthBytes(); int pendingMessages = _pendingDepthMessages.addAndGet(1); long pendingBytes = _pendingDepthBytes.addAndGet(newMessage.getSizeIncludingHeader()); boolean messagesOverflow = maximumQueueDepthMessages >= 0 && queueDepthMessages + pendingMessages > maximumQueueDepthMessages; boolean bytesOverflow = maximumQueueDepthBytes >= 0 && queueDepthBytes + pendingBytes > maximumQueueDepthBytes; if (bytesOverflow || messagesOverflow) { final long depthBytesDelta = -newMessage.getSizeIncludingHeader(); _pendingDepthBytes.addAndGet(-depthBytesDelta); _pendingDepthMessages.addAndGet(-1); final String message = String.format( "Maximum depth exceeded on '%s' : current=[count: %d, size: %d], max=[count: %d, size: %d]", _queue.getName(), queueDepthMessages + pendingMessages, queueDepthBytes + pendingBytes, maximumQueueDepthMessages, maximumQueueDepthBytes); throw new MessageUnacceptableException(message); } _pendingMessages.put(newMessage.getStoredMessage(), newMessage.getSizeIncludingHeader()); }
private boolean isUnderfull() { return _destinationQueue.getOverflowPolicy() == OverflowPolicy.NONE || ((_destinationQueue.getMaximumQueueDepthBytes() < 0 || _destinationQueue.getQueueDepthBytes() + _pendingQueueDepthBytes <= _destinationQueue.getMaximumQueueDepthBytes()) && (_destinationQueue.getMaximumQueueDepthMessages() < 0 || _destinationQueue.getQueueDepthMessages() + _pendingQueueDepthMessages <= _destinationQueue.getMaximumQueueDepthMessages())); } }
private void checkUnderfull(long maximumQueueDepthBytes, long maximumQueueDepthMessages) { long queueDepthBytes = _queue.getQueueDepthBytes(); long queueDepthMessages = _queue.getQueueDepthMessages(); if (isUnderfull(queueDepthBytes, maximumQueueDepthBytes) && isUnderfull(queueDepthMessages, maximumQueueDepthMessages)) { if (_overfullReported.compareAndSet(true, false)) { _eventLogger.message(_queue.getLogSubject(), QueueMessages.UNDERFULL(queueDepthBytes, getFlowResumeLimit(maximumQueueDepthBytes), queueDepthMessages, getFlowResumeLimit(maximumQueueDepthMessages))); } for (final AMQPSession<?, ?> blockedSession : _blockedSessions) { blockedSession.unblock(_queue); _blockedSessions.remove(blockedSession); } } }
do queueDepthMessages = _queue.getQueueDepthMessages(); queueDepthBytes = _queue.getQueueDepthBytes(); queueDepthMessages = _queue.getQueueDepthMessages(); queueDepthBytes = _queue.getQueueDepthBytes(); break;
private void flowTailToDiskIfNecessary(final long maximumQueueDepthBytes, final long maximumQueueDepthMessages) { final long queueDepthBytes = _queue.getQueueDepthBytes(); final long queueDepthMessages = _queue.getQueueDepthMessages(); if ((maximumQueueDepthBytes >= 0L && queueDepthBytes > maximumQueueDepthBytes) || (maximumQueueDepthMessages >= 0L && queueDepthMessages > maximumQueueDepthMessages)) { long cumulativeDepthBytes = 0; long cumulativeDepthMessages = 0; QueueEntryIterator queueEntryIterator = _queue.queueEntryIterator(); while (queueEntryIterator.advance()) { QueueEntry node = queueEntryIterator.getNode(); if (node != null && !node.isDeleted()) { ServerMessage message = node.getMessage(); if (message != null) { cumulativeDepthMessages++; cumulativeDepthBytes += message.getSizeIncludingHeader(); if (cumulativeDepthBytes > maximumQueueDepthBytes || cumulativeDepthMessages > maximumQueueDepthMessages) { flowToDisk(message); } } } } } }
QueueDeclareOkBody responseBody = methodRegistry.createQueueDeclareOkBody(queueName, queue.getQueueDepthMessages(), queue.getConsumerCount()); _connection.writeFrame(responseBody.generateFrame(getChannelId())); QueueDeclareOkBody responseBody = methodRegistry.createQueueDeclareOkBody(queueName, queue.getQueueDepthMessages(), queue.getConsumerCount()); _connection.writeFrame(responseBody.generateFrame(getChannelId())); QueueDeclareOkBody responseBody = methodRegistry.createQueueDeclareOkBody(queueName, queue.getQueueDepthMessages(), queue.getConsumerCount()); _connection.writeFrame(responseBody.generateFrame(getChannelId()));
result.setMessageCount(queue.getQueueDepthMessages()); result.setSubscriberCount(queue.getConsumerCount());