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.view;
018    
019    import org.apache.activemq.broker.region.Destination;
020    
021    public class BrokerDestinationView {
022        private final Destination destination;
023    
024    
025         BrokerDestinationView(Destination destination) {
026            this.destination = destination;
027        }
028    
029    
030        /**
031         * @return the name of the DestinationView
032         */
033        public String getName() {
034            return destination.getName();
035        }
036    
037        /**
038         * @return the number of messages enqueued by this destination
039         */
040    
041        public long getEnqueueCount() {
042            return destination.getDestinationStatistics().getEnqueues().getCount();
043        }
044    
045        /**
046         * @return the number of messages dequeued (dispatched and removed) by this destination
047         */
048        public long getDequeueCount() {
049            return destination.getDestinationStatistics().getDequeues().getCount();
050        }
051    
052        /**
053         * @return the number of messages dispatched by this destination
054         */
055        public long getDispatchCount() {
056            return destination.getDestinationStatistics().getDispatched().getCount();
057        }
058    
059        /**
060         * @return the number of messages inflight (dispatched by not acknowledged) by this destination
061         */
062        public long getInFlightCount() {
063            return destination.getDestinationStatistics().getInflight().getCount();
064        }
065    
066        /**
067         * @return the number of messages expired by this destination
068         */
069        public long getExpiredCount() {
070            return destination.getDestinationStatistics().getExpired().getCount();
071        }
072    
073        /**
074         * @return the number of active consumers on this destination
075         */
076        public int getConsumerCount() {
077            return (int)destination.getDestinationStatistics().getConsumers().getCount();
078        }
079    
080        /**
081         * @return the number of active consumers on this destination
082         */
083        public int getProducerCount() {
084            return (int)destination.getDestinationStatistics().getProducers().getCount();
085        }
086    
087        /**
088         * @return the depth of the Destination
089         */
090        public long getQueueSize() {
091            return destination.getDestinationStatistics().getMessages().getCount();
092        }
093    
094        /**
095         * @return the number of messages cached in memory by this destination
096         */
097        public long getMessagesCached() {
098            return destination.getDestinationStatistics().getMessagesCached().getCount();
099        }
100    
101        /**
102         * @return the memory usage as a percentage for this Destination
103         */
104        public int getMemoryPercentUsage() {
105            return destination.getMemoryUsage().getPercentUsage();
106        }
107    
108        /**
109         * @return the memory used by this destination in bytes
110         */
111        public long getMemoryUsageByteCount() {
112            return destination.getMemoryUsage().getUsage();
113        }
114    
115    
116        /**
117         * @return  the memory limit for this destination in bytes
118         */
119        public long getMemoryLimit() {
120            return destination.getMemoryUsage().getLimit();
121        }
122    
123    
124        /**
125         * @return the average time it takes to store a message on this destination (ms)
126         */
127        public double getAverageEnqueueTime() {
128            return destination.getDestinationStatistics().getProcessTime().getAverageTime();
129        }
130    
131        /**
132         * @return the maximum time it takes to store a message on this destination (ms)
133         */
134        public long getMaxEnqueueTime() {
135            return destination.getDestinationStatistics().getProcessTime().getMaxTime();
136        }
137    
138        /**
139         * @return the minimum time it takes to store a message on this destination (ms)
140         */
141    
142        public long getMinEnqueueTime() {
143            return destination.getDestinationStatistics().getProcessTime().getMinTime();
144        }
145    
146        /**
147         * @return the average size of a message (bytes)
148         */
149        public double getAverageMessageSize() {
150            return destination.getDestinationStatistics().getMessageSize().getAverageSize();
151        }
152    
153        /**
154          * @return the max size of a message (bytes)
155        */
156        public long getMaxMessageSize() {
157            return destination.getDestinationStatistics().getMessageSize().getMaxSize();
158        }
159    
160        /**
161         * @return the min size of a message (bytes)
162         */
163        public long getMinMessageSize() {
164            return destination.getDestinationStatistics().getMessageSize().getMinSize();
165        }
166    
167    
168        /**
169         * @return true if the destination is a Dead Letter Queue
170         */
171        public boolean isDLQ() {
172            return destination.isDLQ();
173        }
174    
175    
176        /**
177         * @return the number of messages blocked waiting for dispatch (indication of slow consumption if greater than zero)
178         */
179        public long getBlockedSends() {
180            return destination.getDestinationStatistics().getBlockedSends().getCount();
181        }
182    
183        /**
184         * @return the average time(ms) messages are  blocked waiting for dispatch (indication of slow consumption if greater than zero)
185         */
186    
187        public double getAverageBlockedTime() {
188            return destination.getDestinationStatistics().getBlockedTime().getAverageTime();
189        }
190    
191        /**
192         * @return the total time(ms) messages are  blocked waiting for dispatch (indication of slow consumption if greater than zero)
193         */
194    
195        public long getTotalBlockedTime() {
196            return destination.getDestinationStatistics().getBlockedTime().getTotalTime();
197        }
198    }