001 /** 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 package org.apache.activemq.broker.jmx; 018 019 import javax.jms.InvalidSelectorException; 020 import javax.management.ObjectName; 021 022 /** 023 * 024 */ 025 public interface SubscriptionViewMBean { 026 027 /** 028 * @return the clientId of the Connection the Subscription is on 029 */ 030 @MBeanInfo("JMS Client id of the Connection the Subscription is on.") 031 String getClientId(); 032 033 /** 034 * @return the id of the Connection the Subscription is on 035 */ 036 @MBeanInfo("ID of the Connection the Subscription is on.") 037 String getConnectionId(); 038 039 /** 040 * @return the id of the Session the subscription is on 041 */ 042 @MBeanInfo("ID of the Session the Subscription is on.") 043 long getSessionId(); 044 045 /** 046 * @return the id of the Subscription 047 */ 048 @MBeanInfo("ID of the Subscription.") 049 long getSubcriptionId(); 050 051 /** 052 * @return the destination name 053 */ 054 @MBeanInfo("The name of the destionation the subscription is on.") 055 String getDestinationName(); 056 057 /** 058 * @return the JMS selector on the current subscription 059 */ 060 @MBeanInfo("The SQL-92 message header selector or XPATH body selector of the subscription.") 061 String getSelector(); 062 063 /** 064 * Attempts to change the current active selector on the subscription. This 065 * operation is not supported for persistent topics. 066 */ 067 void setSelector(@MBeanInfo("selector") String selector) throws InvalidSelectorException, UnsupportedOperationException; 068 069 /** 070 * @return true if the destination is a Queue 071 */ 072 @MBeanInfo("Subscription is on a Queue") 073 boolean isDestinationQueue(); 074 075 /** 076 * @return true of the destination is a Topic 077 */ 078 @MBeanInfo("Subscription is on a Topic") 079 boolean isDestinationTopic(); 080 081 /** 082 * @return true if the destination is temporary 083 */ 084 @MBeanInfo("Subscription is on a temporary Queue/Topic") 085 boolean isDestinationTemporary(); 086 087 /** 088 * @return true if the subscriber is active 089 */ 090 @MBeanInfo("Subscription is active (connected and receiving messages).") 091 boolean isActive(); 092 093 /** 094 * @return number of messages pending delivery 095 */ 096 @MBeanInfo("Number of messages pending delivery.") 097 int getPendingQueueSize(); 098 099 /** 100 * @return number of messages dispatched 101 */ 102 @MBeanInfo("Number of messages dispatched awaiting acknowledgement.") 103 int getDispatchedQueueSize(); 104 105 /** 106 * The same as the number of messages dispatched - 107 * making it explicit 108 * @return 109 */ 110 @MBeanInfo("Number of messages dispatched awaiting acknowledgement.") 111 int getMessageCountAwaitingAcknowledge(); 112 113 /** 114 * @return number of messages that matched the subscription 115 */ 116 @MBeanInfo("Number of messages that sent to the client.") 117 long getDispatchedCounter(); 118 119 /** 120 * @return number of messages that matched the subscription 121 */ 122 @MBeanInfo("Number of messages that matched the subscription.") 123 long getEnqueueCounter(); 124 125 /** 126 * @return number of messages queued by the client 127 */ 128 @MBeanInfo("Number of messages were sent to and acknowledge by the client.") 129 long getDequeueCounter(); 130 131 /** 132 * @return the prefetch that has been configured for this subscriber 133 */ 134 @MBeanInfo("Number of messages to pre-fetch and dispatch to the client.") 135 int getPrefetchSize(); 136 137 /** 138 * @return whether or not the subscriber is retroactive or not 139 */ 140 @MBeanInfo("The subscriber is retroactive (tries to receive broadcasted topic messages sent prior to connecting)") 141 boolean isRetroactive(); 142 143 /** 144 * @return whether or not the subscriber is an exclusive consumer 145 */ 146 @MBeanInfo("The subscriber is exclusive (no other subscribers may receive messages from the destination as long as this one is)") 147 boolean isExclusive(); 148 149 /** 150 * @return whether or not the subscriber is durable (persistent) 151 */ 152 @MBeanInfo("The subsription is persistent.") 153 boolean isDurable(); 154 155 /** 156 * @return whether or not the subscriber ignores local messages 157 */ 158 @MBeanInfo("The subsription ignores local messages.") 159 boolean isNoLocal(); 160 161 /** 162 * @return the maximum number of pending messages allowed in addition to the 163 * prefetch size. If enabled to a non-zero value then this will 164 * perform eviction of messages for slow consumers on non-durable 165 * topics. 166 */ 167 @MBeanInfo("The maximum number of pending messages allowed (in addition to the prefetch size).") 168 int getMaximumPendingMessageLimit(); 169 170 /** 171 * @return the consumer priority 172 */ 173 @MBeanInfo("The subscription priority") 174 byte getPriority(); 175 176 /** 177 * @return the name of the consumer which is only used for durable 178 * consumers. 179 */ 180 @MBeanInfo("The name of the subscription (durable subscriptions only).") 181 String getSubcriptionName(); 182 183 /** 184 * Returns true if this subscription (which may be using wildcards) matches the given queue name 185 * 186 * @param queueName the JMS queue name to match against 187 * @return true if this subscription matches the given queue or false if not 188 */ 189 @MBeanInfo("Returns true if the subscription (which may be using wildcards) matches the given queue name") 190 boolean isMatchingQueue(String queueName); 191 192 /** 193 * Returns true if this subscription (which may be using wildcards) matches the given topic name 194 * 195 * @param topicName the JMS topic name to match against 196 * @return true if this subscription matches the given topic or false if not 197 */ 198 @MBeanInfo("Returns true if the subscription (which may be using wildcards) matches the given topic name") 199 boolean isMatchingTopic(String topicName); 200 201 /** 202 * Returns true if the subscription is slow 203 * 204 * @return true if the subscription is slow 205 */ 206 @MBeanInfo("Returns true if the subscription is slow") 207 boolean isSlowConsumer(); 208 209 /** 210 * Returns the User Name used to authorize creation of this Subscription. 211 * This value can be null if display of user name information is disabled. 212 * 213 * @return the name of the user that created this Subscription 214 */ 215 @MBeanInfo("User Name used to authorize creation of this Subscription") 216 String getUserName(); 217 218 /** 219 * Returns the ObjectName of the Connection that created this Subscription. 220 * This value can be null if for instance this is an off-line durable subscription. 221 * 222 * @return the name of the Connection that created this Subscription. 223 */ 224 @MBeanInfo("ObjectName of the Connection that created this Subscription") 225 ObjectName getConnection(); 226 227 }