1
22
23 package com.liferay.portal.kernel.messaging.jmx;
24
25 import com.liferay.portal.kernel.messaging.Destination;
26 import com.liferay.portal.kernel.messaging.DestinationStatistics;
27
28 import javax.management.MalformedObjectNameException;
29 import javax.management.ObjectName;
30
31
39 public class DestinationStatisticsManager
40 implements DestinationStatisticsManagerMBean {
41
42 public static ObjectName createObjectName(String destinationName) {
43 try {
44 return new ObjectName(_OBJECT_NAME_PREFIX + destinationName);
45 }
46 catch (MalformedObjectNameException mone) {
47 throw new IllegalStateException(mone);
48 }
49 }
50
51 public DestinationStatisticsManager(Destination destination) {
52 _destination = destination;
53 }
54
55 public int getActiveThreadCount() {
56 if (_autoRefresh) {
57 refresh();
58 }
59
60 return _statistics.getActiveThreadCount();
61 }
62
63 public int getCurrentThreadCount() {
64 if (_autoRefresh || (_statistics == null)) {
65 refresh();
66 }
67
68 return _statistics.getCurrentThreadCount();
69 }
70
71 public int getLargestThreadCount() {
72 if (_autoRefresh || (_statistics == null)) {
73 refresh();
74 }
75
76 return _statistics.getLargestThreadCount();
77 }
78
79 public String getLastRefresh() {
80 return String.valueOf(_lastRefresh);
81 }
82
83 public int getMaxThreadPoolSize() {
84 if (_autoRefresh || (_statistics == null)) {
85 refresh();
86 }
87
88 return _statistics.getMaxThreadPoolSize();
89 }
90
91 public int getMinThreadPoolSize() {
92 if (_autoRefresh || (_statistics == null)) {
93 refresh();
94 }
95
96 return _statistics.getMinThreadPoolSize();
97 }
98
99 public long getPendingMessageCount() {
100 if (_autoRefresh || (_statistics == null)) {
101 refresh();
102 }
103
104 return _statistics.getPendingMessageCount();
105 }
106
107 public long getSentMessageCount() {
108 if (_autoRefresh || (_statistics == null)) {
109 refresh();
110 }
111
112 return _statistics.getSentMessageCount();
113 }
114
115 public boolean isAutoRefresh() {
116 return _autoRefresh;
117 }
118
119 public void refresh() {
120 if (System.currentTimeMillis() > _lastRefresh) {
121 _lastRefresh = System.currentTimeMillis();
122 _statistics = _destination.getStatistics();
123 }
124 }
125
126 public void setAutoRefresh(boolean autoRefresh) {
127 _autoRefresh = autoRefresh;
128 }
129
130 private static final String _OBJECT_NAME_PREFIX =
131 "Liferay:product=Portal,type=MessagingDestinationStatistics,name=";
132
133 private boolean _autoRefresh;
134 private Destination _destination;
135 private long _lastRefresh;
136 private DestinationStatistics _statistics;
137
138 }