Return-Path: X-Original-To: apmail-camel-commits-archive@www.apache.org Delivered-To: apmail-camel-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id C5B7D9F9A for ; Thu, 2 Feb 2012 09:49:48 +0000 (UTC) Received: (qmail 25874 invoked by uid 500); 2 Feb 2012 09:49:47 -0000 Delivered-To: apmail-camel-commits-archive@camel.apache.org Received: (qmail 25769 invoked by uid 500); 2 Feb 2012 09:49:29 -0000 Mailing-List: contact commits-help@camel.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@camel.apache.org Delivered-To: mailing list commits@camel.apache.org Received: (qmail 24864 invoked by uid 99); 2 Feb 2012 09:49:25 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 02 Feb 2012 09:49:25 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 02 Feb 2012 09:49:20 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 956AA238890D for ; Thu, 2 Feb 2012 09:48:59 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1239510 - in /camel/branches/camel-2.9.x: ./ 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/ ... Date: Thu, 02 Feb 2012 09:48:59 -0000 To: commits@camel.apache.org From: davsclaus@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120202094859.956AA238890D@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: davsclaus Date: Thu Feb 2 09:48:58 2012 New Revision: 1239510 URL: http://svn.apache.org/viewvc?rev=1239510&view=rev Log: CAMEL-4968: Expose transacted redeliveries as JMX stat Modified: camel/branches/camel-2.9.x/ (props changed) camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPerformanceCounter.java camel/branches/camel-2.9.x/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionIsTransactedRedeliveredTest.java camel/branches/camel-2.9.x/components/camel-jms/src/test/resources/log4j.properties camel/branches/camel-2.9.x/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionIsTransactedRedeliveredTest.xml Propchange: camel/branches/camel-2.9.x/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Thu Feb 2 09:48:58 2012 @@ -1 +1 @@ -/camel/trunk:1235643,1236639,1236667,1237666,1237807,1238225,1238229,1238387,1238463,1238477,1238503,1238937,1238988,1239006,1239045,1239080-1239081,1239470 +/camel/trunk:1235643,1236639,1236667,1237666,1237807,1238225,1238229,1238387,1238463,1238477,1238503,1238937,1238988,1239006,1239045,1239080-1239081,1239470,1239479 Propchange: camel/branches/camel-2.9.x/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java?rev=1239510&r1=1239509&r2=1239510&view=diff ============================================================================== --- camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java (original) +++ camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java Thu Feb 2 09:48:58 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/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPerformanceCounter.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPerformanceCounter.java?rev=1239510&r1=1239509&r2=1239510&view=diff ============================================================================== --- camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPerformanceCounter.java (original) +++ camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPerformanceCounter.java Thu Feb 2 09:48:58 2012 @@ -31,6 +31,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; @@ -53,6 +54,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); @@ -73,6 +75,7 @@ public abstract class ManagedPerformance exchangesFailed.reset(); failuresHandled.reset(); redeliveries.reset(); + transactedRedeliveries.reset(); minProcessingTime.reset(); maxProcessingTime.reset(); totalProcessingTime.reset(); @@ -104,6 +107,10 @@ public abstract class ManagedPerformance return redeliveries.getValue(); } + public long getTransactedRedeliveries() throws Exception { + return transactedRedeliveries.getValue(); + } + public long getMinProcessingTime() throws Exception { return minProcessingTime.getValue(); } @@ -175,6 +182,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); @@ -205,6 +216,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) { Modified: camel/branches/camel-2.9.x/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionIsTransactedRedeliveredTest.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionIsTransactedRedeliveredTest.java?rev=1239510&r1=1239509&r2=1239510&view=diff ============================================================================== --- camel/branches/camel-2.9.x/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionIsTransactedRedeliveredTest.java (original) +++ camel/branches/camel-2.9.x/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionIsTransactedRedeliveredTest.java Thu Feb 2 09:48:58 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/branches/camel-2.9.x/components/camel-jms/src/test/resources/log4j.properties URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/components/camel-jms/src/test/resources/log4j.properties?rev=1239510&r1=1239509&r2=1239510&view=diff ============================================================================== --- camel/branches/camel-2.9.x/components/camel-jms/src/test/resources/log4j.properties (original) +++ camel/branches/camel-2.9.x/components/camel-jms/src/test/resources/log4j.properties Thu Feb 2 09:48:58 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/branches/camel-2.9.x/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionIsTransactedRedeliveredTest.xml URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionIsTransactedRedeliveredTest.xml?rev=1239510&r1=1239509&r2=1239510&view=diff ============================================================================== --- camel/branches/camel-2.9.x/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionIsTransactedRedeliveredTest.xml (original) +++ camel/branches/camel-2.9.x/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionIsTransactedRedeliveredTest.xml Thu Feb 2 09:48:58 2012 @@ -44,14 +44,22 @@ + + + + + + + + - +