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 */
017package org.apache.activemq.broker.jmx;
018
019import javax.jms.InvalidSelectorException;
020import javax.management.ObjectName;
021
022/**
023 *
024 */
025public 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    @Deprecated
049    @MBeanInfo("ID of the Subscription.")
050    long getSubcriptionId();
051
052    /**
053     * @return the id of the Subscription
054     */
055    @MBeanInfo("ID of the Subscription.")
056    long getSubscriptionId();
057
058    /**
059     * @return the destination name
060     */
061    @MBeanInfo("The name of the destination the subscription is on.")
062    String getDestinationName();
063
064    /**
065     * @return the JMS selector on the current subscription
066     */
067    @MBeanInfo("The SQL-92 message header selector or XPATH body selector of the subscription.")
068    String getSelector();
069
070    /**
071     * Attempts to change the current active selector on the subscription. This
072     * operation is not supported for persistent topics.
073     */
074    void setSelector(@MBeanInfo("selector") String selector) throws InvalidSelectorException, UnsupportedOperationException;
075
076    /**
077     * @return true if the destination is a Queue
078     */
079    @MBeanInfo("Subscription is on a Queue")
080    boolean isDestinationQueue();
081
082    /**
083     * @return true of the destination is a Topic
084     */
085    @MBeanInfo("Subscription is on a Topic")
086    boolean isDestinationTopic();
087
088    /**
089     * @return true if the destination is temporary
090     */
091    @MBeanInfo("Subscription is on a temporary Queue/Topic")
092    boolean isDestinationTemporary();
093
094    /**
095     * @return true if the subscriber is active
096     */
097    @MBeanInfo("Subscription is active (connected and receiving messages).")
098    boolean isActive();
099
100    @MBeanInfo("Subscription was created by a demand-forwarding network bridge")
101    boolean isNetwork();
102
103    /**
104     * @return number of messages pending delivery
105     */
106    @MBeanInfo("Number of messages pending delivery.")
107    int getPendingQueueSize();
108
109    /**
110     * @return number of messages dispatched
111     */
112    @MBeanInfo("Number of messages dispatched awaiting acknowledgement.")
113    int getDispatchedQueueSize();
114
115    /**
116     * The same as the number of messages dispatched - making it explicit
117     * @return number of messages waiting for an acknowledge.
118     */
119    @MBeanInfo("Number of messages dispatched awaiting acknowledgement.")
120    int getMessageCountAwaitingAcknowledge();
121
122    /**
123     * @return number of messages that matched the subscription
124     */
125    @MBeanInfo("Number of messages that sent to the client.")
126    long getDispatchedCounter();
127
128    /**
129     * @return number of messages that matched the subscription
130     */
131    @MBeanInfo("Number of messages that matched the subscription.")
132    long getEnqueueCounter();
133
134    /**
135     * @return number of messages queued by the client
136     */
137    @MBeanInfo("Number of messages were sent to and acknowledge by the client.")
138    long getDequeueCounter();
139
140    /**
141     * @return the prefetch that has been configured for this subscriber
142     */
143    @MBeanInfo("Number of messages to pre-fetch and dispatch to the client.")
144    int getPrefetchSize();
145
146    /**
147     * @return whether or not the subscriber is retroactive or not
148     */
149    @MBeanInfo("The subscriber is retroactive (tries to receive broadcasted topic messages sent prior to connecting)")
150    boolean isRetroactive();
151
152    /**
153     * @return whether or not the subscriber is an exclusive consumer
154     */
155    @MBeanInfo("The subscriber is exclusive (no other subscribers may receive messages from the destination as long as this one is)")
156    boolean isExclusive();
157
158    /**
159     * @return whether or not the subscriber is durable (persistent)
160     */
161    @MBeanInfo("The subscription is persistent.")
162    boolean isDurable();
163
164    /**
165     * @return whether or not the subscriber ignores local messages
166     */
167    @MBeanInfo("The subscription ignores local messages.")
168    boolean isNoLocal();
169
170    /**
171     * @return the maximum number of pending messages allowed in addition to the
172     *         prefetch size. If enabled to a non-zero value then this will
173     *         perform eviction of messages for slow consumers on non-durable
174     *         topics.
175     */
176    @MBeanInfo("The maximum number of pending messages allowed (in addition to the prefetch size).")
177    int getMaximumPendingMessageLimit();
178
179    /**
180     * @return the consumer priority
181     */
182    @MBeanInfo("The subscription priority")
183    byte getPriority();
184
185    /**
186     * @return the name of the consumer which is only used for durable
187     *         consumers.
188     */
189    @Deprecated
190    @MBeanInfo("The name of the subscription (durable subscriptions only).")
191    String getSubcriptionName();
192
193    /**
194     * @return the name of the consumer which is only used for durable
195     *         consumers.
196     */
197    @MBeanInfo("The name of the subscription (durable subscriptions only).")
198    String getSubscriptionName();
199
200    /**
201     * Returns true if this subscription (which may be using wildcards) matches the given queue name
202     *
203     * @param queueName the JMS queue name to match against
204     * @return true if this subscription matches the given queue or false if not
205     */
206    @MBeanInfo("Returns true if the subscription (which may be using wildcards) matches the given queue name")
207    boolean isMatchingQueue(String queueName);
208
209    /**
210     * Returns true if this subscription (which may be using wildcards) matches the given topic name
211     *
212     * @param topicName the JMS topic name to match against
213     * @return true if this subscription matches the given topic or false if not
214     */
215    @MBeanInfo("Returns true if the subscription (which may be using wildcards) matches the given topic name")
216    boolean isMatchingTopic(String topicName);
217
218    /**
219     * Returns true if the subscription is slow
220     *
221     * @return true if the subscription is slow
222     */
223    @MBeanInfo("Returns true if the subscription is slow")
224    boolean isSlowConsumer();
225
226    /**
227     * Returns the User Name used to authorize creation of this Subscription.
228     * This value can be null if display of user name information is disabled.
229     *
230     * @return the name of the user that created this Subscription
231     */
232    @MBeanInfo("User Name used to authorize creation of this Subscription")
233    String getUserName();
234
235    /**
236     * Returns the ObjectName of the Connection that created this Subscription.
237     * This value can be null if for instance this is an off-line durable subscription.
238     *
239     * @return the name of the Connection that created this Subscription.
240     */
241    @MBeanInfo("ObjectName of the Connection that created this Subscription")
242    ObjectName getConnection();
243
244
245    @MBeanInfo("Resets statistics.")
246    void resetStatistics();
247
248    @MBeanInfo("Messages consumed")
249    long getConsumedCount();
250
251}