blob: 2bc94995e9aa0498f6e2f22a45e3b1ebb1313cf8 [file] [log] [blame]
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
package org.apache.qpid.server.queue;
import java.io.IOException;
import javax.management.JMException;
import javax.management.MBeanOperationInfo;
import javax.management.openmbean.CompositeData;
import javax.management.openmbean.TabularData;
import org.apache.qpid.AMQException;
import org.apache.qpid.server.management.MBeanAttribute;
import org.apache.qpid.server.management.MBeanOperation;
import org.apache.qpid.server.management.MBeanOperationParameter;
/**
* The management interface exposed to allow management of a queue.
* @author Robert J. Greig
* @author Bhupendra Bhardwaj
* @version 0.1
*/
public interface ManagedQueue
{
static final String TYPE = "Queue";
/**
* Returns the Name of the ManagedQueue.
* @return the name of the managedQueue.
* @throws IOException
*/
@MBeanAttribute(name="Name", description = TYPE + " Name")
String getName() throws IOException;
/**
* Total number of messages on the queue, which are yet to be delivered to the consumer(s).
* @return number of undelivered message in the Queue.
* @throws IOException
*/
@MBeanAttribute(name="MessageCount", description = "Total number of undelivered messages on the queue")
Integer getMessageCount() throws IOException;
/**
* Tells the total number of messages receieved by the queue since startup.
* @return total number of messages received.
* @throws IOException
*/
@MBeanAttribute(name="ReceivedMessageCount", description="The total number of messages receieved by the queue since startup")
Long getReceivedMessageCount() throws IOException;
/**
* Size of messages in the queue
* @return
* @throws IOException
*/
@MBeanAttribute(name="QueueDepth", description="Size of messages(KB) in the queue")
Long getQueueDepth() throws IOException, JMException;
/**
* Returns the total number of active subscribers to the queue.
* @return the number of active subscribers
* @throws IOException
*/
@MBeanAttribute(name="ActiveConsumerCount", description="The total number of active subscribers to the queue")
Integer getActiveConsumerCount() throws IOException;
/**
* Returns the total number of subscribers to the queue.
* @return the number of subscribers.
* @throws IOException
*/
@MBeanAttribute(name="ConsumerCount", description="The total number of subscribers to the queue")
Integer getConsumerCount() throws IOException;
/**
* Tells the Owner of the ManagedQueue.
* @return the owner's name.
* @throws IOException
*/
@MBeanAttribute(name="Owner", description = "Owner")
String getOwner() throws IOException;
/**
* Tells whether this ManagedQueue is durable or not.
* @return true if this ManagedQueue is a durable queue.
* @throws IOException
*/
@MBeanAttribute(name="Durable", description = "true if the AMQQueue is durable")
boolean isDurable() throws IOException;
/**
* Tells if the ManagedQueue is set to AutoDelete.
* @return true if the ManagedQueue is set to AutoDelete.
* @throws IOException
*/
@MBeanAttribute(name="AutoDelete", description = "true if the AMQQueue is AutoDelete")
boolean isAutoDelete() throws IOException;
/**
* Returns the maximum age of a message (expiration time)
* @return the maximum age
* @throws IOException
*/
Long getMaximumMessageAge() throws IOException;
/**
* Sets the maximum age of a message
* @param age maximum age of message.
* @throws IOException
*/
@MBeanAttribute(name="MaximumMessageAge", description="Threshold high value for message age on the broker")
void setMaximumMessageAge(Long age) throws IOException;
/**
* Returns the maximum size of a message (in kbytes) allowed to be accepted by the
* ManagedQueue. This is useful in setting notifications or taking
* appropriate action, if the size of the message received is more than
* the allowed size.
* @return the maximum size of a message allowed to be aceepted by the
* ManagedQueue.
* @throws IOException
*/
Long getMaximumMessageSize() throws IOException;
/**
* Sets the maximum size of the message (in kbytes) that is allowed to be
* accepted by the Queue.
* @param size maximum size of message.
* @throws IOException
*/
@MBeanAttribute(name="MaximumMessageSize", description="Threshold high value(KB) for a message size")
void setMaximumMessageSize(Long size) throws IOException;
/**
* Tells the maximum number of messages that can be stored in the queue.
* This is useful in setting the notifications or taking required
* action is the number of message increase this limit.
* @return maximum muber of message allowed to be stored in the queue.
* @throws IOException
*/
Long getMaximumMessageCount() throws IOException;
/**
* Sets the maximum number of messages allowed to be stored in the queue.
* @param value the maximum number of messages allowed to be stored in the queue.
* @throws IOException
*/
@MBeanAttribute(name="MaximumMessageCount", description="Threshold high value for number of undelivered messages in the queue")
void setMaximumMessageCount(Long value) throws IOException;
/**
* This is useful for setting notifications or taking required action if the size of messages
* stored in the queue increases over this limit.
* @return threshold high value for Queue Depth
* @throws IOException
*/
Long getMaximumQueueDepth() throws IOException;
/**
* Sets the maximum size of all the messages together, that can be stored
* in the queue.
* @param value
* @throws IOException
*/
@MBeanAttribute(name="MaximumQueueDepth", description="The threshold high value(KB) for Queue Depth")
void setMaximumQueueDepth(Long value) throws IOException;
//********** Operations *****************//
/**
* Returns a subset of all the messages stored in the queue. The messages
* are returned based on the given index numbers.
* @param fromIndex
* @param toIndex
* @return
* @throws IOException
* @throws JMException
*/
@MBeanOperation(name="viewMessages",
description="Message headers for messages in this queue within given index range. eg. from index 1 - 100")
TabularData viewMessages(@MBeanOperationParameter(name="from index", description="from index")int fromIndex,
@MBeanOperationParameter(name="to index", description="to index")int toIndex)
throws IOException, JMException, AMQException;
@MBeanOperation(name="viewMessageContent", description="The message content for given Message Id")
CompositeData viewMessageContent(@MBeanOperationParameter(name="Message Id", description="Message Id")long messageId)
throws IOException, JMException;
/**
* Deletes the first message from top.
* @throws IOException
* @throws JMException
*/
@MBeanOperation(name="deleteMessageFromTop", description="Deletes the first message from top",
impact= MBeanOperationInfo.ACTION)
void deleteMessageFromTop() throws IOException, JMException;
/**
* Clears the queue by deleting all the undelivered messages from the queue.
* @throws IOException
* @throws JMException
*/
@MBeanOperation(name="clearQueue",
description="Clears the queue by deleting all the undelivered messages from the queue",
impact= MBeanOperationInfo.ACTION)
void clearQueue() throws IOException, JMException;
/**
* Moves the messages in given range of message Ids to given Queue. QPID-170
* @param fromMessageId first in the range of message ids
* @param toMessageId last in the range of message ids
* @param toQueue where the messages are to be moved
* @throws IOException
* @throws JMException
* @throws AMQException
*/
@MBeanOperation(name="moveMessages",
description="You can move messages to another queue from this queue ",
impact= MBeanOperationInfo.ACTION)
void moveMessages(@MBeanOperationParameter(name="from MessageId", description="from MessageId")long fromMessageId,
@MBeanOperationParameter(name="to MessageId", description="to MessageId")long toMessageId,
@MBeanOperationParameter(name= ManagedQueue.TYPE, description="to Queue Name")String toQueue)
throws IOException, JMException, AMQException;
}