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 2012/02/02 09:25:55 UTC
svn commit: r1239479 - in /camel/trunk:
camel-core/src/main/java/org/apache/camel/api/management/mbean/
camel-core/src/main/java/org/apache/camel/management/mbean/
components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/
components/camel-j...
Author: davsclaus
Date: Thu Feb 2 08:25:54 2012
New Revision: 1239479
URL: http://svn.apache.org/viewvc?rev=1239479&view=rev
Log:
CAMEL-4968: Expose transacted redeliveries as JMX stat
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java
camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPerformanceCounter.java
camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionIsTransactedRedeliveredTest.java
camel/trunk/components/camel-jms/src/test/resources/log4j.properties
camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionIsTransactedRedeliveredTest.xml
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java?rev=1239479&r1=1239478&r2=1239479&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java Thu Feb 2 08:25:54 2012
@@ -35,9 +35,12 @@ public interface ManagedPerformanceCount
@ManagedAttribute(description = "Number of failures handled")
long getFailuresHandled() throws Exception;
- @ManagedAttribute(description = "Number of redeliveries")
+ @ManagedAttribute(description = "Number of redeliveries (Camel error handler)")
long getRedeliveries() throws Exception;
+ @ManagedAttribute(description = "Number of transacted redeliveries (from external transacted source)")
+ long getTransactedRedeliveries() throws Exception;
+
@ManagedAttribute(description = "Min Processing Time [milliseconds]")
long getMinProcessingTime() throws Exception;
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPerformanceCounter.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPerformanceCounter.java?rev=1239479&r1=1239478&r2=1239479&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPerformanceCounter.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPerformanceCounter.java Thu Feb 2 08:25:54 2012
@@ -35,6 +35,7 @@ public abstract class ManagedPerformance
private Statistic exchangesFailed;
private Statistic failuresHandled;
private Statistic redeliveries;
+ private Statistic transactedRedeliveries;
private Statistic minProcessingTime;
private Statistic maxProcessingTime;
private Statistic totalProcessingTime;
@@ -57,6 +58,7 @@ public abstract class ManagedPerformance
this.failuresHandled = new Statistic("org.apache.camel.failuresHandled", this, Statistic.UpdateMode.COUNTER);
this.redeliveries = new Statistic("org.apache.camel.redeliveries", this, Statistic.UpdateMode.COUNTER);
+ this.transactedRedeliveries = new Statistic("org.apache.camel.transactedRedeliveries", this, Statistic.UpdateMode.COUNTER);
this.minProcessingTime = new Statistic("org.apache.camel.minimumProcessingTime", this, Statistic.UpdateMode.MINIMUM);
this.maxProcessingTime = new Statistic("org.apache.camel.maximumProcessingTime", this, Statistic.UpdateMode.MAXIMUM);
@@ -77,6 +79,7 @@ public abstract class ManagedPerformance
exchangesFailed.reset();
failuresHandled.reset();
redeliveries.reset();
+ transactedRedeliveries.reset();
minProcessingTime.reset();
maxProcessingTime.reset();
totalProcessingTime.reset();
@@ -108,6 +111,10 @@ public abstract class ManagedPerformance
return redeliveries.getValue();
}
+ public long getTransactedRedeliveries() throws Exception {
+ return transactedRedeliveries.getValue();
+ }
+
public long getMinProcessingTime() throws Exception {
return minProcessingTime.getValue();
}
@@ -179,6 +186,10 @@ public abstract class ManagedPerformance
if (ExchangeHelper.isFailureHandled(exchange)) {
failuresHandled.increment();
}
+ Boolean transactedRedelivered = exchange.isTransactedRedelivered();
+ if (transactedRedelivered != null && transactedRedelivered) {
+ transactedRedeliveries.increment();
+ }
minProcessingTime.updateValue(time);
maxProcessingTime.updateValue(time);
@@ -209,6 +220,10 @@ public abstract class ManagedPerformance
if (ExchangeHelper.isRedelivered(exchange)) {
redeliveries.increment();
}
+ Boolean transactedRedelivered = exchange.isTransactedRedelivered();
+ if (transactedRedelivered != null && transactedRedelivered) {
+ transactedRedeliveries.increment();
+ }
long now = new Date().getTime();
if (firstExchangeFailureTimestamp.getUpdateCount() == 0) {
@@ -229,6 +244,7 @@ public abstract class ManagedPerformance
sb.append(String.format(" exchangesFailed=\"%s\"", exchangesFailed.getValue()));
sb.append(String.format(" failuresHandled=\"%s\"", failuresHandled.getValue()));
sb.append(String.format(" redeliveries=\"%s\"", redeliveries.getValue()));
+ sb.append(String.format(" transactedRedeliveries=\"%s\"", transactedRedeliveries.getValue()));
sb.append(String.format(" minProcessingTime=\"%s\"", minProcessingTime.getValue()));
sb.append(String.format(" maxProcessingTime=\"%s\"", maxProcessingTime.getValue()));
sb.append(String.format(" totalProcessingTime=\"%s\"", totalProcessingTime.getValue()));
Modified: camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionIsTransactedRedeliveredTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionIsTransactedRedeliveredTest.java?rev=1239479&r1=1239478&r2=1239479&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionIsTransactedRedeliveredTest.java (original)
+++ camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionIsTransactedRedeliveredTest.java Thu Feb 2 08:25:54 2012
@@ -16,6 +16,9 @@
*/
package org.apache.camel.component.jms.tx;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.builder.AdviceWithRouteBuilder;
@@ -45,6 +48,10 @@ public class JMSTransactionIsTransactedR
return true;
}
+ protected MBeanServer getMBeanServer() {
+ return context.getManagementStrategy().getManagementAgent().getMBeanServer();
+ }
+
@Test
public void testTransactionSuccess() throws Exception {
context.getRouteDefinitions().get(0).adviceWith(context, new AdviceWithRouteBuilder() {
@@ -69,6 +76,28 @@ public class JMSTransactionIsTransactedR
mock.assertIsSatisfied();
error.assertIsSatisfied();
+
+ // check JMX stats
+
+ ObjectName name = ObjectName.getInstance("org.apache.camel:context=localhost/camel-1,type=routes,name=\"myRoute\"");
+
+ Long total = (Long) getMBeanServer().getAttribute(name, "ExchangesTotal");
+ assertEquals(3, total.intValue());
+
+ Long completed = (Long) getMBeanServer().getAttribute(name, "ExchangesCompleted");
+ assertEquals(1, completed.intValue());
+
+ Long failed = (Long) getMBeanServer().getAttribute(name, "ExchangesFailed");
+ assertEquals(2, failed.intValue());
+
+ // Camel error handler redeliveries (we do not use that in this example)
+ Long redeliveries = (Long) getMBeanServer().getAttribute(name, "Redeliveries");
+ assertEquals(0, redeliveries.intValue());
+ // Camel error handler redeliveries (we do not use that in this example)
+
+ // there should be 2 transacted redeliveries
+ Long transactedRedeliveries = (Long) getMBeanServer().getAttribute(name, "TransactedRedeliveries");
+ assertEquals(2, transactedRedeliveries.intValue());
}
public static class MyProcessor implements Processor {
Modified: camel/trunk/components/camel-jms/src/test/resources/log4j.properties
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/resources/log4j.properties?rev=1239479&r1=1239478&r2=1239479&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/test/resources/log4j.properties (original)
+++ camel/trunk/components/camel-jms/src/test/resources/log4j.properties Thu Feb 2 08:25:54 2012
@@ -26,6 +26,7 @@ log4j.rootLogger=INFO, out
#log4j.logger.org.apache.camel.component.jms.reply=TRACE
#log4j.logger.org.apache.camel=DEBUG
#log4j.logger.org.springframework.jms.listener=TRACE
+#log4j.logger.org.apache.camel.management=DEBUG
# CONSOLE appender not used by default
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
Modified: camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionIsTransactedRedeliveredTest.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionIsTransactedRedeliveredTest.xml?rev=1239479&r1=1239478&r2=1239479&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionIsTransactedRedeliveredTest.xml (original)
+++ camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionIsTransactedRedeliveredTest.xml Thu Feb 2 08:25:54 2012
@@ -44,14 +44,22 @@
<property name="errorHandlerLogStackTrace" value="false"/>
</bean>
+ <bean id="naming" class="org.apache.camel.management.DefaultManagementNamingStrategy">
+ <property name="hostName" value="localhost"/>
+ <property name="domainName" value="org.apache.camel"/>
+ </bean>
+
<camelContext xmlns="http://camel.apache.org/schema/spring">
+
+ <!-- enable JMX -->
+ <jmxAgent id="agent" disabled="false"/>
<!-- we do not want any exceptions to be logged, neither that a rollback occurred -->
<errorHandler id="txEH" type="TransactionErrorHandler" rollbackLoggingLevel="OFF">
<redeliveryPolicy logStackTrace="false" logExhausted="false"/>
</errorHandler>
- <route errorHandlerRef="txEH">
+ <route id="myRoute" errorHandlerRef="txEH">
<from uri="activemq:queue:okay"/>
<transacted/>
<to uri="mock:before"/>