Author: rgodfrey
Date: Fri Mar 23 19:55:33 2012
New Revision: 1304575
URL: http://svn.apache.org/viewvc?rev=1304575&view=rev
Log:
NO-JIRA : [Java Config] more work on queue presentation
Added:
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/BindingServlet.java
- copied, changed from r1304245,
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueServlet.java
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/css/queue.css
- copied, changed from r1304245,
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/css/broker.css
Modified:
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/Management.java
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueServlet.java
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/broker.js
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/queue.js
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/queue.html
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/QueueEntryImpl.java
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java
qpid/branches/java-config-and-management/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/MockAMQQueue.java
Modified:
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/Management.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/Management.java?rev=1304575&r1=1304574&r2=1304575&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/Management.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/Management.java
Fri Mar 23 19:55:33 2012
@@ -25,6 +25,7 @@ import org.apache.qpid.server.management
import org.apache.qpid.server.management.plugin.servlet.FileServlet;
import org.apache.qpid.server.management.plugin.servlet.api.ExchangesServlet;
import org.apache.qpid.server.management.plugin.servlet.api.VhostsServlet;
+import org.apache.qpid.server.management.plugin.servlet.rest.BindingServlet;
import org.apache.qpid.server.management.plugin.servlet.rest.ConnectionServlet;
import org.apache.qpid.server.management.plugin.servlet.rest.ExchangeServlet;
import org.apache.qpid.server.management.plugin.servlet.rest.QueueServlet;
@@ -67,6 +68,7 @@ public class Management
root.addServlet(new ServletHolder(new ExchangeServlet(_broker)),
"/rest/exchange/*");
root.addServlet(new ServletHolder(new QueueServlet(_broker)),
"/rest/queue/*");
root.addServlet(new ServletHolder(new ConnectionServlet(_broker)),
"/rest/connection/*");
+ root.addServlet(new ServletHolder(new BindingServlet(_broker)),
"/rest/binding/*");
root.addServlet(new ServletHolder(new
DefinedFileServlet("queue.html")),"/queue");
root.addServlet(new ServletHolder(new
DefinedFileServlet("exchange.html")),"/exchange");
Copied:
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/BindingServlet.java
(from r1304245,
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueServlet.java)
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/BindingServlet.java?p2=qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/BindingServlet.java&p1=qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueServlet.java&r1=1304245&r2=1304575&rev=1304575&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueServlet.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/BindingServlet.java
Fri Mar 23 19:55:33 2012
@@ -20,23 +20,6 @@
*/
package org.apache.qpid.server.management.plugin.servlet.rest;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.SerializationConfig;
-
-import org.apache.qpid.server.model.Binding;
-import org.apache.qpid.server.model.Broker;
-import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.model.Consumer;
-import org.apache.qpid.server.model.LifetimePolicy;
-import org.apache.qpid.server.model.Queue;
-import org.apache.qpid.server.model.State;
-import org.apache.qpid.server.model.Statistics;
-import org.apache.qpid.server.model.VirtualHost;
-import org.apache.qpid.server.queue.AMQQueue;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -47,8 +30,23 @@ import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.apache.qpid.server.model.Binding;
+import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.Consumer;
+import org.apache.qpid.server.model.LifetimePolicy;
+import org.apache.qpid.server.model.Queue;
+import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.Statistics;
+import org.apache.qpid.server.model.VirtualHost;
+import org.apache.qpid.server.queue.AMQQueue;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.SerializationConfig;
-public class QueueServlet extends AbstractServlet
+public class BindingServlet extends AbstractServlet
{
@@ -56,7 +54,7 @@ public class QueueServlet extends Abstra
private static final Comparator DEFAULT_COMPARATOR = new
KeyComparator("name");
- public QueueServlet(Broker broker)
+ public BindingServlet(Broker broker)
{
_broker = broker;
}
@@ -86,8 +84,10 @@ public class QueueServlet extends Abstra
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);
+
String vhostName = null;
String queueName = null;
+ String exchangeName = null;
if(request.getPathInfo() != null && request.getPathInfo().length()>0)
{
@@ -96,7 +96,11 @@ public class QueueServlet extends Abstra
vhostName = parts.length == 0 ? "" : parts[0];
if(parts.length > 1)
{
- queueName = parts[1];
+ exchangeName = parts[1];
+ if(parts.length > 2)
+ {
+ queueName = parts[2];
+ }
}
}
@@ -104,17 +108,29 @@ public class QueueServlet extends Abstra
{
if(vhostName == null || vhostName.equals(vhost.getName()))
{
- for(Queue queue : vhost.getQueues())
+ if(exchangeName == null || exchangeName.equals("*"))
{
- if(queueName == null || queueName.equals(queue.getName()))
+ for(Queue queue : vhost.getQueues())
{
- outputObject.add(convertToObject(queue));
- if(queueName != null)
+ if(queueName == null ||
queueName.equals(queue.getName()))
{
- break;
+ for(Binding binding : queue.getBindings())
+ {
+ outputObject.add(convertObjectToMap(binding));
+ }
+
+ if(queueName != null)
+ {
+ break;
+ }
}
- }
+ }
+ }
+ else
+ {
+ // TODO
}
+
if(vhostName != null)
{
break;
Modified:
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueServlet.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueServlet.java?rev=1304575&r1=1304574&r2=1304575&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueServlet.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueServlet.java
Fri Mar 23 19:55:33 2012
@@ -66,6 +66,10 @@ public class QueueServlet extends Abstra
response.setContentType("application/json");
response.setStatus(HttpServletResponse.SC_OK);
+ response.setHeader("Cache-Control","no-cache");
+ response.setHeader("Pragma","no-cache");
+ response.setDateHeader ("Expires", 0);
+
String[] sortKeys = request.getParameterValues("sort");
Comparator comparator;
if(sortKeys == null || sortKeys.length == 0)
Copied:
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/css/queue.css
(from r1304245,
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/css/broker.css)
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/css/queue.css?p2=qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/css/queue.css&p1=qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/css/broker.css&r1=1304245&r2=1304575&rev=1304575&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/css/broker.css
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/css/queue.css
Fri Mar 23 19:55:33 2012
@@ -1,16 +1,10 @@
-#virtualHosts {
+
+#bindings {
width: 560px;
- height: 110px;
+ height: 100px;
}
-#exchanges {
+
+#consumers {
width: 560px;
- height: 250px;
-}
-#queues {
- width: 560px;
- height: 200px;
-}
-#connections {
- width: 560px;
- height: 200px;
+ height: 100px;
}
Modified:
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/broker.js
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/broker.js?rev=1304575&r1=1304574&r2=1304575&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/broker.js
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/broker.js
Fri Mar 23 19:55:33 2012
@@ -98,12 +98,12 @@ require(["dojo/store/JsonRest",
};
exchangeTuple = new UpdatableStore("/rest/exchange", "exchanges",
- [ { name: "Name", field:
"name", width: "190px"},
- { name: "Type", field:
"type", width: "90px"},
- { name: "Durable", field:
"durable", width: "80px"},
- { name: "Auto-Delete", field:
"auto-delete", width: "100px"},
- { name: "Bindings", field:
"binding-count", width: "80px"}
- ]);
+ [ { name: "Name",
field: "name", width: "190px"},
+ { name: "Type",
field: "type", width: "90px"},
+ { name: "Durable",
field: "durable", width: "80px"},
+ { name: "Auto-Delete",
field: "auto-delete", width: "100px"},
+ { name: "Bindings",
field: "binding-count", width: "80px"}
+ ]);
queueTuple = new UpdatableStore("/rest/queue", "queues",
[ { name: "Name", field:
"name", width: "240px"},
{ name: "Durable", field:
"durable", width: "100px"},
Modified:
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/queue.js
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/queue.js?rev=1304575&r1=1304574&r2=1304575&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/queue.js
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/queue.js
Fri Mar 23 19:55:33 2012
@@ -1,7 +1,5 @@
-var vhostGrid, dataStore, store, vhostStore;
-var exchangeGrid, exchangeStore, exchangeDataStore;
var updateList = new Array();
-var vhostTuple, exchangesTuple;
+var bindingsTuple;
require(["dojo/store/JsonRest",
@@ -18,133 +16,249 @@ require(["dojo/store/JsonRest",
{
- function UpdatableStore( query, divName, structure, func ) {
+ function UpdatableStore( data, divName, structure, func )
+ {
- this.query = query;
- var thisObj = this;
+ var thisObj = this;
- xhr.get({url: query, handleAs: "json"}).then(function(data)
- {
- thisObj.store = Observable(Memory({data: data,
idProperty: "id"}));
- thisObj.dataStore = ObjectStore({objectStore:
thisObj.store});
- thisObj.grid = new DataGrid({
- store: thisObj.dataStore,
- structure: structure,
- }, divName);
- // since we created this grid programmatically,
call startup to render it
- thisObj.grid.startup();
+ thisObj.store = Observable(Memory({data: data, idProperty:
"id"}));
+ thisObj.dataStore = ObjectStore({objectStore: thisObj.store});
+ thisObj.grid = new DataGrid({
+ store: thisObj.dataStore,
+ structure: structure,
+ }, divName);
- updateList.push( thisObj );
- if( func )
- {
- func(thisObj);
- }
- });
+ // since we created this grid programmatically, call startup
to render it
+ thisObj.grid.startup();
- }
+ if( func )
+ {
+ func(thisObj);
+ }
- UpdatableStore.prototype.update = function() {
- var store = this.store;
+ }
+ UpdatableStore.prototype.update = function(bindingData)
+ {
+ data = bindingData;
+ var store = this.store;
- xhr.get({url: this.query, handleAs: "json"}).then(function(data)
- {
- // handle deletes
- // iterate over existing store... if not in new data then
remove
- store.query({ }).forEach(function(object)
+
+ // handle deletes
+ // iterate over existing store... if not in new data then
remove
+ store.query({ }).forEach(function(object)
+ {
+ for(var i=0; i < data.length; i++)
{
- for(var i=0; i < data.length; i++)
+ if(data[i].id == object.id)
{
- if(data[i].id == object.id)
- {
- return;
- }
+ return;
}
- store.remove(object.id);
- //store.notify(null, object.id);
- });
+ }
+ store.remove(object.id);
+ //store.notify(null, object.id);
+ });
- // iterate over data...
- for(var i=0; i < data.length; i++)
+ // iterate over data...
+ for(var i=0; i < data.length; i++)
+ {
+ if(item = store.get(data[i].id))
{
- if(item = store.get(data[i].id))
+ var modified;
+ for(var propName in data[i])
{
- var modified;
- for(var propName in data[i])
+ if(item[ propName ] != data[i][ propName ])
{
- if(item[ propName ] != data[i][ propName ])
- {
- item[ propName ] = data[i][ propName ];
- modified = true;
- }
- }
- if(modified)
- {
- // ... check attributes for updates
- store.notify(item, data[i].id);
+ item[ propName ] = data[i][ propName ];
+ modified = true;
}
}
- else
+ if(modified)
{
- // ,,, if not in the store then add
- store.put(data[i]);
+ // ... check attributes for updates
+ store.notify(item, data[i].id);
}
}
- });
- };
+ else
+ {
+ // ,,, if not in the store then add
+ store.put(data[i]);
+ }
+ }
+
+ };
- queueUpdater = new Object();
function formatBytes(amount)
{
- this.units = "bytes";
+ this.units = "B";
this.value = 0;
if(amount < 1000)
{
- this.units = "bytes";
+ this.units = "B";
this.value = amount;
}
else if(amount < 1000 * 1024)
{
- this.units = "Kb";
+ this.units = "KB";
this.value = amount / 1024
this.value = this.value.toPrecision(3);
}
else if(amount < 1000 * 1024 * 1024)
{
- this.units = "Mb";
+ this.units = "MB";
this.value = amount / (1024 * 1024)
this.value = this.value.toPrecision(3);
}
+ else if(amount < 1000 * 1024 * 1024 * 1024)
+ {
+ this.units = "GB";
+ this.value = amount / (1024 * 1024 * 1024)
+ this.value = this.value.toPrecision(3);
+ }
}
- queueUpdater.update = function() {
+
+ function QueueUpdater()
+ {
+ this.name = dom.byId("name");
+ this.state = dom.byId("state");
+ this.durable = dom.byId("durable");
+ this.lifetimePolicy = dom.byId("lifetimePolicy");
+ this.queueDepthMessages = dom.byId("queueDepthMessages");
+ this.queueDepthBytes = dom.byId("queueDepthBytes");
+ this.queueDepthBytesUnits = dom.byId("queueDepthBytesUnits");
+ this.unacknowledgedMessages = dom.byId("unacknowledgedMessages");
+ this.unacknowledgedBytes = dom.byId("unacknowledgedBytes");
+ this.unacknowledgedBytesUnits =
dom.byId("unacknowledgedBytesUnits");
+
+ var thisObj = this;
+
+ xhr.get({url: "/rest/queue/test/queue", handleAs:
"json"}).then(function(data)
+ {
+ thisObj.queueData = data[0];
+ var stats = thisObj.queueData[ "statistics" ];
+
+ // flatten statistics into attributes
+ for(var propName in stats)
+ {
+ thisObj.queueData[ propName ] = stats[
propName ];
+ }
+
+ thisObj.updateHeader();
+ thisObj.bindingsGrid = new
UpdatableStore(thisObj.queueData.bindings, "bindings",
+ [ { name: "Exchange",
field: "exchange", width: "90px"},
+ { name: "Binding
Key", field: "name", width: "120px"},
+ { name:
"Arguments", field: "arguments", width: "200px"}
+ ]);
+
+ thisObj.consumersGrid = new
UpdatableStore(thisObj.queueData.consumers, "consumers",
+ [ { name: "Name",
field: "name", width: "120px"},
+ { name: "Mode",
field: "distributionMode", width: "120px"}
+ ]);
+
+
+
+ });
+
+ }
+
+ QueueUpdater.prototype.updateHeader = function()
+ {
+ this.name.innerHTML = this.queueData[ "name" ];
+ this.state.innerHTML = this.queueData[ "state" ];
+ this.durable.innerHTML = this.queueData[ "durable" ];
+ this.lifetimePolicy.innerHTML = this.queueData[ "lifetimePolicy" ];
+
+ this.queueDepthMessages.innerHTML =
this.queueData["queueDepthMessages"];
+ bytesDepth = new formatBytes( this.queueData["queueDepthBytes"] );
+ this.queueDepthBytes.innerHTML = "(" + bytesDepth.value;
+ this.queueDepthBytesUnits.innerHTML = bytesDepth.units + ")"
+
+ this.unacknowledgedMessages.innerHTML =
this.queueData["unacknowledgedMessages"];
+ bytesDepth = new formatBytes(
this.queueData["unacknowledgedBytes"] );
+ this.unacknowledgedBytes.innerHTML = "(" + bytesDepth.value;
+ this.unacknowledgedBytesUnits.innerHTML = bytesDepth.units + ")"
+
+ }
+
+ QueueUpdater.prototype.update = function()
+ {
+
+ var thisObj = this;
+
xhr.get({url: "/rest/queue/test/queue", handleAs:
"json"}).then(function(data)
{
+ thisObj.queueData = data[0];
+ var stats = thisObj.queueData[ "statistics" ];
+
+ // flatten statistics into attributes
+ for(var propName in stats)
+ {
+ thisObj.queueData[ propName ] = stats[ propName ];
+ }
+
+ var bindings = thisObj.queueData[ "bindings" ];
+ for(var i=0; i < bindings.length; i++)
+ {
+ bindings[i].arguments =
dojo.toJson(bindings[i].arguments);
+
+ }
+
+ thisObj.updateHeader();
queueData = data[0];
stats = queueData[ "statistics" ];
- dom.byId("name").innerHTML = queueData[ "name" ];
- dom.byId("state").innerHTML = queueData[ "state" ];
- dom.byId("durable").innerHTML = queueData[ "durable" ];
- dom.byId("lifetimePolicy").innerHTML = queueData[
"lifetimePolicy" ];
-
- dom.byId("queueDepthMessages").innerHTML =
stats["queueDepthMessages"];
- bytesDepth = new formatBytes( stats["queueDepthBytes"] );
- dom.byId("queueDepthBytes").innerHTML = "(" +
bytesDepth.value;
- dom.byId("queueDepthBytesUnits").innerHTML =
bytesDepth.units + ")"
+
+ var sampleTime = new Date();
+ var messageIn = stats["totalEnqueuedMessages"];
+ var bytesIn = stats["totalEnqueuedBytes"];
+ var messageOut = stats["totalDequeuedMessages"];
+ var bytesOut = stats["totalDequeuedBytes"];
+
+ if(thisObj.sampleTime)
+ {
+ var samplePeriod = sampleTime.getTime() -
thisObj.sampleTime.getTime();
+
+ var msgInRate = (1000 * (messageIn -
thisObj.messageIn)) / samplePeriod;
+ var msgOutRate = (1000 * (messageOut -
thisObj.messageOut)) / samplePeriod;
+ var bytesInRate = (1000 * (bytesIn - thisObj.bytesIn))
/ samplePeriod;
+ var bytesOutRate = (1000 * (bytesOut -
thisObj.bytesOut)) / samplePeriod;
+
+ dom.byId("msgInRate").innerHTML = msgInRate.toFixed(0);
+ bytesInFormat = new formatBytes( bytesInRate );
+ dom.byId("bytesInRate").innerHTML = "(" +
bytesInFormat.value;
+ dom.byId("bytesInRateUnits").innerHTML =
bytesInFormat.units + "/s)"
+
+ dom.byId("msgOutRate").innerHTML =
msgOutRate.toFixed(0);
+ bytesOutFormat = new formatBytes( bytesOutRate );
+ dom.byId("bytesOutRate").innerHTML = "(" +
bytesOutFormat.value;
+ dom.byId("bytesOutRateUnits").innerHTML =
bytesOutFormat.units + "/s)"
+
+ }
+
+ thisObj.sampleTime = sampleTime;
+ thisObj.messageIn = messageIn;
+ thisObj.bytesIn = bytesIn;
+ thisObj.messageOut = messageOut;
+ thisObj.bytesOut = bytesOut;
+
+ thisObj.bindingsGrid.update(thisObj.queueData.bindings)
+ thisObj.consumersGrid.update(thisObj.queueData.consumers)
});
};
+ queueUpdater = new QueueUpdater();
+
updateList.push( queueUpdater );
queueUpdater.update();
Modified:
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/queue.html
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/queue.html?rev=1304575&r1=1304574&r2=1304575&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/queue.html
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/queue.html
Fri Mar 23 19:55:33 2012
@@ -10,6 +10,7 @@
<link rel="stylesheet"
href="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dijit/themes/claro/claro.css">
<link rel="stylesheet"
href="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dojox/grid/resources/claroGrid.css">
+ <link rel="stylesheet" href="../css/queue.css" media="screen">
<link rel="stylesheet" href="css/common.css" media="screen">
@@ -46,36 +47,36 @@
<br/>
<span style="">State:</span><span id="state"
style="position:absolute; left:6em"></span>
<span style="position:absolute; left:26em">Pre-fetched:</span>
- <span id="unack-count" style="position:absolute;
right:9.5em">500</span>
+ <span id="unacknowledgedMessages" style="position:absolute;
right:9.5em">500</span>
<span style="position:absolute; right: 5em; width: 4em">
msgs</span>
- <span style="position:absolute; right: 3.3em">(256</span>
- <span style="position:absolute; right: 0em; width: 3em">Kb)</span>
+ <span id="unacknowledgedBytes" style="position:absolute; right:
3.3em">(256</span>
+ <span id="unacknowledgedBytesUnits" style="position:absolute;
right: 0em; width: 3em">Kb)</span>
<br/>
<span style="">Durable:</span><span id="durable"
style="position:absolute; left:6em"></span>
<span style="position:absolute; left:26em">Inbound:</span>
- <span id="inbound-rate-msg" style="position:absolute;
right:9.5em">347</span>
+ <span id="msgInRate" style="position:absolute; right:9.5em"></span>
<span style="position:absolute; right: 5em; width: 4em">
msg/s</span>
- <span style="position:absolute; right: 3.3em">(132</span>
- <span style="position:absolute; right: 0em; width:
3em">Kb/s)</span>
+ <span id="bytesInRate" style="position:absolute; right:
3.3em"></span>
+ <span id="bytesInRateUnits" style="position:absolute; right: 0em;
width: 3em"></span>
<br/>
<span style="">Lifespan:</span><span style="position:absolute;
left:6em" id="lifetimePolicy"></span>
<span style="position:absolute; left:26em">Outbound:</span>
- <span id="outbound-rate-msg" style="position:absolute;
right:9.5em">823</span>
+ <span id="msgOutRate" style="position:absolute;
right:9.5em"></span>
<span style="position:absolute; right: 5em; width: 4em">
msg/s</span>
- <span style="position:absolute; right: 3.3em">(0.92</span>
- <span style="position:absolute; right: 0em; width:
3em">Mb/s)</span>
+ <span id="bytesOutRate" style="position:absolute; right:
3.3em"></span>
+ <span id="bytesOutRateUnits" style="position:absolute; right: 0em;
width: 3em"></span>
<br/>
<br/>
<div data-dojo-type="dijit.TitlePane" data-dojo-props="title:
'Bindings'">
- I'm pane #1
+ <div id="bindings"></div>
</div>
<br/>
<div data-dojo-type="dijit.TitlePane" data-dojo-props="title:
'Consumers'">
- I'm pane #2
+ <div id="consumers"></div>
</div>
<br/>
<div data-dojo-type="dijit.TitlePane" data-dojo-props="title:
'Alerting Thresholds'">
- I'm pane #3
+ TODO
</div>
</div>
<!--<div data-dojo-type="dijit.layout.ContentPane"
data-dojo-props="region:'trailing'">Trailing pane</div>-->
Modified:
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java?rev=1304575&r1=1304574&r2=1304575&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java
Fri Mar 23 19:55:33 2012
@@ -368,7 +368,7 @@ final class QueueAdapter extends Abstrac
}
else if(STATE.equals(name))
{
- // TODO
+ return State.ACTIVE; // TODO
}
else if(TIME_TO_LIVE.equals(name))
{
@@ -524,19 +524,19 @@ final class QueueAdapter extends Abstrac
}
else if(TOTAL_DEQUEUED_MESSAGES.equals(name))
{
- return null; // TODO
+ return _queue.getTotalDequeueCount();
}
else if(TOTAL_ENQUEUED_BYTES.equals(name))
{
- _queue.getTotalEnqueueSize();
+ return _queue.getTotalEnqueueSize();
}
else if(TOTAL_ENQUEUED_MESSAGES.equals(name))
{
- return null; // TODO
+ return _queue.getTotalEnqueueCount();
}
else if(UNACKNOWLEDGED_BYTES.equals(name))
{
- return null; // TODO
+ return _queue.getUnackedMessageBytes();
}
else if(UNACKNOWLEDGED_MESSAGES.equals(name))
{
Modified:
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java?rev=1304575&r1=1304574&r2=1304575&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java
Fri Mar 23 19:55:33 2012
@@ -58,6 +58,12 @@ public interface AMQQueue extends Managa
LogSubject getLogSubject();
+ long getUnackedMessageBytes();
+
+ long getTotalDequeueCount();
+
+ long getTotalEnqueueCount();
+
public interface Context
{
QueueEntry getLastSeenEntry();
@@ -121,7 +127,7 @@ public interface AMQQueue extends Managa
void dequeue(QueueEntry entry, Subscription sub);
- void decrementUnackedMsgCount();
+ void decrementUnackedMsgCount(QueueEntry queueEntry);
boolean resend(final QueueEntry entry, final Subscription subscription)
throws AMQException;
Modified:
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/QueueEntryImpl.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/QueueEntryImpl.java?rev=1304575&r1=1304574&r2=1304575&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/QueueEntryImpl.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/QueueEntryImpl.java
Fri Mar 23 19:55:33 2012
@@ -232,7 +232,7 @@ public abstract class QueueEntryImpl imp
{
if(state instanceof SubscriptionAcquiredState)
{
- getQueue().decrementUnackedMsgCount();
+ getQueue().decrementUnackedMsgCount(this);
Subscription subscription =
((SubscriptionAcquiredState)state).getSubscription();
if (subscription != null)
{
@@ -368,7 +368,7 @@ public abstract class QueueEntryImpl imp
Subscription s = null;
if (state instanceof SubscriptionAcquiredState)
{
- getQueue().decrementUnackedMsgCount();
+ getQueue().decrementUnackedMsgCount(this);
s = ((SubscriptionAcquiredState) state).getSubscription();
s.onDequeue(this);
}
Modified:
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java?rev=1304575&r1=1304574&r2=1304575&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java
Fri Mar 23 19:55:33 2012
@@ -120,6 +120,7 @@ public class SimpleAMQQueue implements A
private final AtomicLong _dequeueCount = new AtomicLong();
private final AtomicLong _dequeueSize = new AtomicLong();
+ private final AtomicLong _enqueueCount = new AtomicLong();
private final AtomicLong _enqueueSize = new AtomicLong();
private final AtomicLong _persistentMessageEnqueueSize = new AtomicLong();
private final AtomicLong _persistentMessageDequeueSize = new AtomicLong();
@@ -132,6 +133,7 @@ public class SimpleAMQQueue implements A
private final AtomicLong _byteTxnDequeues = new AtomicLong(0);
private final AtomicLong _unackedMsgCount = new AtomicLong(0);
private final AtomicLong _unackedMsgCountHigh = new AtomicLong(0);
+ private final AtomicLong _unackedMsgBytes = new AtomicLong();
private final AtomicInteger _bindingCountHigh = new AtomicInteger();
@@ -196,6 +198,7 @@ public class SimpleAMQQueue implements A
private final Collection<SubscriptionRegistrationListener>
_subscriptionListeners =
new ArrayList<SubscriptionRegistrationListener>();
+
protected SimpleAMQQueue(AMQShortString name, boolean durable,
AMQShortString owner, boolean autoDelete, boolean exclusive, VirtualHost
virtualHost, Map<String,Object> arguments)
{
this(name, durable, owner, autoDelete, exclusive, virtualHost,new
SimpleQueueEntryList.Factory(), arguments);
@@ -838,6 +841,7 @@ public class SimpleAMQQueue implements A
{
long size = message.getSize();
getAtomicQueueSize().addAndGet(size);
+ _enqueueCount.incrementAndGet();
_enqueueSize.addAndGet(size);
if(message.isPersistent() && isDurable())
{
@@ -846,6 +850,16 @@ public class SimpleAMQQueue implements A
}
}
+ public long getTotalDequeueCount()
+ {
+ return _dequeueCount.get();
+ }
+
+ public long getTotalEnqueueCount()
+ {
+ return _enqueueCount.get();
+ }
+
private void incrementQueueCount()
{
getAtomicQueueCount().incrementAndGet();
@@ -869,7 +883,7 @@ public class SimpleAMQQueue implements A
setLastSeenEntry(sub, entry);
_deliveredMessages.incrementAndGet();
- incrementUnackedMsgCount();
+ incrementUnackedMsgCount(entry);
sub.send(entry, batch);
}
@@ -2467,14 +2481,21 @@ public class SimpleAMQQueue implements A
return _unackedMsgCount.get();
}
- public void decrementUnackedMsgCount()
+ public long getUnackedMessageBytes()
+ {
+ return _unackedMsgBytes.get();
+ }
+
+ public void decrementUnackedMsgCount(QueueEntry queueEntry)
{
_unackedMsgCount.decrementAndGet();
+ _unackedMsgBytes.addAndGet(-queueEntry.getSize());
}
- private void incrementUnackedMsgCount()
+ private void incrementUnackedMsgCount(QueueEntry entry)
{
long unackedMsgCount = _unackedMsgCount.incrementAndGet();
+ _unackedMsgBytes.addAndGet(entry.getSize());
long unackedMsgCountHigh;
while(unackedMsgCount > (unackedMsgCountHigh =
_unackedMsgCountHigh.get()))
Modified:
qpid/branches/java-config-and-management/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/MockAMQQueue.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/MockAMQQueue.java?rev=1304575&r1=1304574&r2=1304575&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/MockAMQQueue.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/MockAMQQueue.java
Fri Mar 23 19:55:33 2012
@@ -103,6 +103,11 @@ public class MockAMQQueue implements AMQ
};
}
+ public long getUnackedMessageBytes()
+ {
+ return 0;
+ }
+
public ConfigStore getConfigStore()
{
return getVirtualHost().getConfigStore();
@@ -123,6 +128,16 @@ public class MockAMQQueue implements AMQ
return 0;
}
+ public long getTotalDequeueCount()
+ {
+ return 0;
+ }
+
+ public long getTotalEnqueueCount()
+ {
+ return 0;
+ }
+
public int getBindingCountHigh()
{
return 0;
@@ -599,7 +614,7 @@ public class MockAMQQueue implements AMQ
return 0;
}
- public void decrementUnackedMsgCount()
+ public void decrementUnackedMsgCount(QueueEntry queueEntry)
{
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]