You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2015/09/28 11:05:50 UTC
[1/2] camel git commit: CAMEL-9179: Add uptime to route so we can
easily see per route how long time they have been running
Repository: camel
Updated Branches:
refs/heads/master 3d8ff95b9 -> 6d3d1309c
CAMEL-9179: Add uptime to route so we can easily see per route how long time they have been running
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/92c5fe5a
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/92c5fe5a
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/92c5fe5a
Branch: refs/heads/master
Commit: 92c5fe5a29c6e4599a07d829fec113ed93ba2a29
Parents: 3d8ff95
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Sep 28 10:55:32 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Sep 28 10:55:32 2015 +0200
----------------------------------------------------------------------
.../src/main/java/org/apache/camel/Route.java | 7 +++++++
.../api/management/mbean/ManagedRouteMBean.java | 3 +++
.../apache/camel/impl/DefaultCamelContext.java | 2 +-
.../org/apache/camel/impl/DefaultRoute.java | 20 ++++++++++++++++++--
.../camel/management/mbean/ManagedRoute.java | 4 ++++
.../camel/management/ManagedRouteStopTest.java | 7 +++++++
6 files changed, 40 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/92c5fe5a/camel-core/src/main/java/org/apache/camel/Route.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/Route.java b/camel-core/src/main/java/org/apache/camel/Route.java
index d5cc0db..31b16b1 100644
--- a/camel-core/src/main/java/org/apache/camel/Route.java
+++ b/camel-core/src/main/java/org/apache/camel/Route.java
@@ -46,6 +46,13 @@ public interface Route extends EndpointAware {
String getId();
/**
+ * Gets the uptime in a human readable format
+ *
+ * @return the uptime in days/hours/minutes
+ */
+ String getUptime();
+
+ /**
* Gets the inbound {@link Consumer}
*
* @return the inbound consumer
http://git-wip-us.apache.org/repos/asf/camel/blob/92c5fe5a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java
index 7083a0f..9d9e9b8 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java
@@ -33,6 +33,9 @@ public interface ManagedRouteMBean extends ManagedPerformanceCounterMBean {
@ManagedAttribute(description = "Route State")
String getState();
+ @ManagedAttribute(description = "Route Uptime")
+ String getUptime();
+
/**
* @deprecated use {@link #getExchangesInflight()}
*/
http://git-wip-us.apache.org/repos/asf/camel/blob/92c5fe5a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index c7207fe..5935f52 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -2654,7 +2654,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
public String getUptime() {
// compute and log uptime
if (startDate == null) {
- return "not started";
+ return "";
}
long delta = new Date().getTime() - startDate.getTime();
return TimeUtils.printDuration(delta);
http://git-wip-us.apache.org/repos/asf/camel/blob/92c5fe5a/camel-core/src/main/java/org/apache/camel/impl/DefaultRoute.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultRoute.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultRoute.java
index 0d214c0..2b280e7 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultRoute.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultRoute.java
@@ -17,6 +17,7 @@
package org.apache.camel.impl;
import java.util.ArrayList;
+import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -26,6 +27,7 @@ import org.apache.camel.Route;
import org.apache.camel.Service;
import org.apache.camel.spi.RouteContext;
import org.apache.camel.support.ServiceSupport;
+import org.apache.camel.util.TimeUtils;
/**
* Default implementation of {@link Route}.
@@ -42,6 +44,7 @@ public abstract class DefaultRoute extends ServiceSupport implements Route {
private final Map<String, Object> properties = new HashMap<String, Object>();
private final List<Service> services = new ArrayList<Service>();
private final RouteContext routeContext;
+ private Date startDate;
public DefaultRoute(RouteContext routeContext, Endpoint endpoint) {
this.routeContext = routeContext;
@@ -64,6 +67,16 @@ public abstract class DefaultRoute extends ServiceSupport implements Route {
return (String) properties.get(Route.ID_PROPERTY);
}
+ @Override
+ public String getUptime() {
+ // compute and log uptime
+ if (startDate == null) {
+ return "";
+ }
+ long delta = new Date().getTime() - startDate.getTime();
+ return TimeUtils.printDuration(delta);
+ }
+
public Endpoint getEndpoint() {
return endpoint;
}
@@ -122,15 +135,18 @@ public abstract class DefaultRoute extends ServiceSupport implements Route {
}
protected void doStart() throws Exception {
- // noop
+ startDate = new Date();
}
protected void doStop() throws Exception {
- // noop
+ // and clear start date
+ startDate = null;
}
@Override
protected void doShutdown() throws Exception {
+ // and clear start date
+ startDate = null;
// clear services when shutting down
services.clear();
}
http://git-wip-us.apache.org/repos/asf/camel/blob/92c5fe5a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
index 50d041c..2f11b41 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java
@@ -113,6 +113,10 @@ public class ManagedRoute extends ManagedPerformanceCounter implements TimerList
return status.name();
}
+ public String getUptime() {
+ return route.getUptime();
+ }
+
public Integer getInflightExchanges() {
return (int) super.getExchangesInflight();
}
http://git-wip-us.apache.org/repos/asf/camel/blob/92c5fe5a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopTest.java
index 7c42de1..4c82293 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopTest.java
@@ -57,6 +57,10 @@ public class ManagedRouteStopTest extends ManagementTestSupport {
String state = (String) mbeanServer.getAttribute(on, "State");
assertEquals("Should be started", ServiceStatus.Started.name(), state);
+ String uptime = (String) mbeanServer.getAttribute(on, "Uptime");
+ assertNotNull(uptime);
+ log.info("Uptime: {}", uptime);
+
mbeanServer.invoke(on, "stop", null, null);
registered = mbeanServer.isRegistered(on);
@@ -65,6 +69,9 @@ public class ManagedRouteStopTest extends ManagementTestSupport {
// should be stopped, eg its removed
state = (String) mbeanServer.getAttribute(on, "State");
assertEquals("Should be stopped", ServiceStatus.Stopped.name(), state);
+
+ uptime = (String) mbeanServer.getAttribute(on, "Uptime");
+ assertEquals("", uptime);
}
@Override
[2/2] camel git commit: CAMEL-9179: Add uptime to Camel route list
command.
Posted by da...@apache.org.
CAMEL-9179: Add uptime to Camel route list command.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/6d3d1309
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/6d3d1309
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/6d3d1309
Branch: refs/heads/master
Commit: 6d3d1309c364201ac17c677644818c174c597e62
Parents: 92c5fe5
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Sep 28 11:07:34 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Sep 28 11:07:34 2015 +0200
----------------------------------------------------------------------
.../commands/AbstractLocalCamelController.java | 12 +++++
.../apache/camel/commands/RouteListCommand.java | 48 ++++++++++++++++++--
.../jolokia/DefaultJolokiaCamelController.java | 6 ++-
3 files changed, 61 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/6d3d1309/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java
----------------------------------------------------------------------
diff --git a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java
index 823e5b3..6d80584 100644
--- a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java
+++ b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java
@@ -37,6 +37,7 @@ import org.apache.camel.Endpoint;
import org.apache.camel.Route;
import org.apache.camel.ServiceStatus;
import org.apache.camel.StatefulService;
+import org.apache.camel.api.management.mbean.ManagedRouteMBean;
import org.apache.camel.model.ModelHelper;
import org.apache.camel.model.RouteDefinition;
import org.apache.camel.model.rest.RestDefinition;
@@ -266,6 +267,17 @@ public abstract class AbstractLocalCamelController extends AbstractCamelControll
row.put("camelContextName", context.getName());
row.put("routeId", route.getId());
row.put("state", getRouteState(route));
+ row.put("uptime", route.getUptime());
+ ManagedRouteMBean mr = context.getManagedRoute(route.getId(), ManagedRouteMBean.class);
+ if (mr != null) {
+ row.put("exchangesTotal", "" + mr.getExchangesTotal());
+ row.put("exchangesInflight", "" + mr.getExchangesInflight());
+ row.put("exchangesFailed", "" + mr.getExchangesFailed());
+ } else {
+ row.put("exchangesTotal", "0");
+ row.put("exchangesInflight", "0");
+ row.put("exchangesFailed", "0");
+ }
answer.add(row);
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/6d3d1309/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteListCommand.java
----------------------------------------------------------------------
diff --git a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteListCommand.java b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteListCommand.java
index 8c00d7a..2c94afd 100644
--- a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteListCommand.java
+++ b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteListCommand.java
@@ -29,6 +29,10 @@ public class RouteListCommand extends AbstractCamelCommand {
private static final String CONTEXT_COLUMN_LABEL = "Context";
private static final String ROUTE_COLUMN_LABEL = "Route";
private static final String STATUS_COLUMN_LABEL = "Status";
+ private static final String TOTAL_COLUMN_LABEL = "Total #";
+ private static final String FAILED_COLUMN_LABEL = "Failed #";
+ private static final String INFLIGHT_COLUMN_LABEL = "Inflight #";
+ private static final String UPTIME_COLUMN_LABEL = "Uptime";
private static final int DEFAULT_COLUMN_WIDTH_INCREMENT = 0;
private static final String DEFAULT_FIELD_PREAMBLE = " ";
@@ -54,13 +58,17 @@ public class RouteListCommand extends AbstractCamelCommand {
final String rowFormat = buildFormatString(columnWidths, false);
if (routes.size() > 0) {
- out.println(String.format(headerFormat, CONTEXT_COLUMN_LABEL, ROUTE_COLUMN_LABEL, STATUS_COLUMN_LABEL));
- out.println(String.format(headerFormat, "-------", "-----", "------"));
+ out.println(String.format(headerFormat, CONTEXT_COLUMN_LABEL, ROUTE_COLUMN_LABEL, STATUS_COLUMN_LABEL, TOTAL_COLUMN_LABEL, FAILED_COLUMN_LABEL, INFLIGHT_COLUMN_LABEL, UPTIME_COLUMN_LABEL));
+ out.println(String.format(headerFormat, "-------", "-----", "------", "-------", "--------", "----------", "------"));
for (Map<String, String> row : routes) {
String contextId = row.get("camelContextName");
String routeId = row.get("routeId");
String state = row.get("state");
- out.println(String.format(rowFormat, contextId, routeId, state));
+ String total = row.get("exchangesTotal");
+ String failed = row.get("exchangesFailed");
+ String inflight = row.get("exchangesInflight");
+ String uptime = row.get("uptime");
+ out.println(String.format(rowFormat, contextId, routeId, state, total, failed, inflight, uptime));
}
}
@@ -74,6 +82,10 @@ public class RouteListCommand extends AbstractCamelCommand {
int maxContextLen = 0;
int maxRouteLen = 0;
int maxStatusLen = 0;
+ int maxTotalLen = 0;
+ int maxFailedLen = 0;
+ int maxInflightLen = 0;
+ int maxUptimeLen = 0;
for (Map<String, String> row : routes) {
final String contextId = row.get("camelContextName");
@@ -84,12 +96,28 @@ public class RouteListCommand extends AbstractCamelCommand {
final String status = row.get("state");
maxStatusLen = java.lang.Math.max(maxStatusLen, status == null ? 0 : status.length());
+
+ final String total = row.get("exchangesTotal");
+ maxTotalLen = java.lang.Math.max(maxTotalLen, total == null ? 0 : total.length());
+
+ final String failed = row.get("exchangesFailed");
+ maxFailedLen = java.lang.Math.max(maxFailedLen, failed == null ? 0 : failed.length());
+
+ final String inflight = row.get("exchangesInflight");
+ maxInflightLen = java.lang.Math.max(maxInflightLen, inflight == null ? 0 : inflight.length());
+
+ final String uptime = row.get("uptime");
+ maxUptimeLen = java.lang.Math.max(maxUptimeLen, uptime == null ? 0 : uptime.length());
}
final Map<String, Integer> retval = new Hashtable<String, Integer>(3);
retval.put(CONTEXT_COLUMN_LABEL, maxContextLen);
retval.put(ROUTE_COLUMN_LABEL, maxRouteLen);
retval.put(STATUS_COLUMN_LABEL, maxStatusLen);
+ retval.put(TOTAL_COLUMN_LABEL, maxTotalLen);
+ retval.put(FAILED_COLUMN_LABEL, maxFailedLen);
+ retval.put(INFLIGHT_COLUMN_LABEL, maxInflightLen);
+ retval.put(UPTIME_COLUMN_LABEL, maxUptimeLen);
return retval;
}
@@ -112,14 +140,26 @@ public class RouteListCommand extends AbstractCamelCommand {
int contextLen = Math.min(columnWidths.get(CONTEXT_COLUMN_LABEL) + columnWidthIncrement, MAX_COLUMN_WIDTH);
int routeLen = Math.min(columnWidths.get(ROUTE_COLUMN_LABEL) + columnWidthIncrement, MAX_COLUMN_WIDTH);
int statusLen = Math.min(columnWidths.get(STATUS_COLUMN_LABEL) + columnWidthIncrement, MAX_COLUMN_WIDTH);
+ int totalLen = Math.min(columnWidths.get(TOTAL_COLUMN_LABEL) + columnWidthIncrement, MAX_COLUMN_WIDTH);
+ int failedlLen = Math.min(columnWidths.get(FAILED_COLUMN_LABEL) + columnWidthIncrement, MAX_COLUMN_WIDTH);
+ int inflightLen = Math.min(columnWidths.get(INFLIGHT_COLUMN_LABEL) + columnWidthIncrement, MAX_COLUMN_WIDTH);
+ int uptimeLen = Math.min(columnWidths.get(UPTIME_COLUMN_LABEL) + columnWidthIncrement, MAX_COLUMN_WIDTH);
contextLen = Math.max(MIN_COLUMN_WIDTH, contextLen);
routeLen = Math.max(MIN_COLUMN_WIDTH, routeLen);
- // last row does not have min width
+ statusLen = Math.max(MIN_COLUMN_WIDTH, statusLen);
+ totalLen = Math.max(MIN_COLUMN_WIDTH, totalLen);
+ failedlLen = Math.max(MIN_COLUMN_WIDTH, failedlLen);
+ inflightLen = Math.max(MIN_COLUMN_WIDTH, inflightLen);
+ uptimeLen = Math.max(MIN_COLUMN_WIDTH, uptimeLen);
final StringBuilder retval = new StringBuilder(DEFAULT_FORMAT_BUFFER_LENGTH);
retval.append(fieldPreamble).append("%-").append(contextLen).append('.').append(contextLen).append('s').append(fieldPostamble).append(' ');
retval.append(fieldPreamble).append("%-").append(routeLen).append('.').append(routeLen).append('s').append(fieldPostamble).append(' ');
retval.append(fieldPreamble).append("%-").append(statusLen).append('.').append(statusLen).append('s').append(fieldPostamble).append(' ');
+ retval.append(fieldPreamble).append("%").append(totalLen).append('.').append(totalLen).append('s').append(fieldPostamble).append(' ');
+ retval.append(fieldPreamble).append("%").append(failedlLen).append('.').append(failedlLen).append('s').append(fieldPostamble).append(' ');
+ retval.append(fieldPreamble).append("%").append(inflightLen).append('.').append(inflightLen).append('s').append(fieldPostamble).append(' ');
+ retval.append(fieldPreamble).append("%-").append(uptimeLen).append('.').append(uptimeLen).append('s').append(fieldPostamble).append(' ');
return retval.toString();
}
http://git-wip-us.apache.org/repos/asf/camel/blob/6d3d1309/platforms/commands/commands-jolokia/src/main/java/org/apache/camel/commands/jolokia/DefaultJolokiaCamelController.java
----------------------------------------------------------------------
diff --git a/platforms/commands/commands-jolokia/src/main/java/org/apache/camel/commands/jolokia/DefaultJolokiaCamelController.java b/platforms/commands/commands-jolokia/src/main/java/org/apache/camel/commands/jolokia/DefaultJolokiaCamelController.java
index 6404fa2..21fd022 100644
--- a/platforms/commands/commands-jolokia/src/main/java/org/apache/camel/commands/jolokia/DefaultJolokiaCamelController.java
+++ b/platforms/commands/commands-jolokia/src/main/java/org/apache/camel/commands/jolokia/DefaultJolokiaCamelController.java
@@ -332,7 +332,7 @@ public class DefaultJolokiaCamelController extends AbstractCamelController imple
List<J4pReadRequest> list = new ArrayList<J4pReadRequest>();
for (ObjectName on : sr.getObjectNames()) {
- list.add(new J4pReadRequest(on, "CamelId", "RouteId", "State"));
+ list.add(new J4pReadRequest(on, "CamelId", "RouteId", "State", "Uptime", "ExchangesTotal", "ExchangesInflight", "ExchangesFailed"));
}
List<J4pReadResponse> lrr = jolokia.execute(list);
@@ -343,6 +343,10 @@ public class DefaultJolokiaCamelController extends AbstractCamelController imple
row.put("camelContextName", rr.getValue("CamelId").toString());
row.put("routeId", routeId);
row.put("state", rr.getValue("State").toString());
+ row.put("uptime", rr.getValue("Uptime").toString());
+ row.put("exchangesTotal", rr.getValue("ExchangesTotal").toString());
+ row.put("exchangesInflight", rr.getValue("ExchangesInflight").toString());
+ row.put("exchangesFailed", rr.getValue("ExchangesFailed").toString());
answer.add(row);
}
}