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 2010/07/09 14:06:56 UTC
svn commit: r962496 - in /camel/trunk/camel-core/src:
main/java/org/apache/camel/builder/ main/java/org/apache/camel/management/
main/java/org/apache/camel/management/event/
main/java/org/apache/camel/management/mbean/
main/java/org/apache/camel/proces...
Author: davsclaus
Date: Fri Jul 9 12:06:55 2010
New Revision: 962496
URL: http://svn.apache.org/viewvc?rev=962496&view=rev
Log:
CAMEL-2932: Added event for redelivery attempt. Renamed ExchangeFailureEvent to ExchangeFailedEvent which is a better name.
Added:
camel/trunk/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailedEvent.java (contents, props changed)
- copied, changed from r962466, camel/trunk/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureEvent.java
camel/trunk/camel-core/src/main/java/org/apache/camel/management/event/ExchangeRedeliveryEvent.java
- copied, changed from r962466, camel/trunk/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSentEvent.java
camel/trunk/camel-core/src/test/java/org/apache/camel/management/EventNotifierRedeliveryEventsTest.java
- copied, changed from r962466, camel/trunk/camel-core/src/test/java/org/apache/camel/management/EventNotifierFailureHandledEventsTest.java
Removed:
camel/trunk/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureEvent.java
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java
camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultEventFactory.java
camel/trunk/camel-core/src/main/java/org/apache/camel/management/EventNotifierSupport.java
camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifier.java
camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifierMBean.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
camel/trunk/camel-core/src/main/java/org/apache/camel/spi/EventFactory.java
camel/trunk/camel-core/src/main/java/org/apache/camel/spi/EventNotifier.java
camel/trunk/camel-core/src/main/java/org/apache/camel/util/EventHelper.java
camel/trunk/camel-core/src/test/java/org/apache/camel/management/EventNotifierEventsTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeSentTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/management/MultipleEventNotifierEventsTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugExceptionEventBreakpointTest.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java?rev=962496&r1=962495&r2=962496&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java Fri Jul 9 12:06:55 2010
@@ -35,7 +35,7 @@ import org.apache.camel.component.mock.M
import org.apache.camel.management.EventNotifierSupport;
import org.apache.camel.management.event.ExchangeCompletedEvent;
import org.apache.camel.management.event.ExchangeCreatedEvent;
-import org.apache.camel.management.event.ExchangeFailureEvent;
+import org.apache.camel.management.event.ExchangeFailedEvent;
import org.apache.camel.spi.EventNotifier;
import org.apache.camel.util.EndpointHelper;
import org.apache.camel.util.ObjectHelper;
@@ -288,7 +288,7 @@ public class NotifyBuilder {
}
@Override
- public boolean onExchangeFailure(Exchange exchange) {
+ public boolean onExchangeFailed(Exchange exchange) {
current++;
return true;
}
@@ -363,7 +363,7 @@ public class NotifyBuilder {
private int current;
@Override
- public boolean onExchangeFailure(Exchange exchange) {
+ public boolean onExchangeFailed(Exchange exchange) {
current++;
return true;
}
@@ -404,7 +404,7 @@ public class NotifyBuilder {
}
@Override
- public boolean onExchangeFailure(Exchange exchange) {
+ public boolean onExchangeFailed(Exchange exchange) {
current++;
return true;
}
@@ -473,7 +473,7 @@ public class NotifyBuilder {
private int current;
@Override
- public boolean onExchangeFailure(Exchange exchange) {
+ public boolean onExchangeFailed(Exchange exchange) {
current++;
return true;
}
@@ -528,7 +528,7 @@ public class NotifyBuilder {
}
@Override
- public boolean onExchangeFailure(Exchange exchange) {
+ public boolean onExchangeFailed(Exchange exchange) {
if (!received && !matches) {
matches = predicate.matches(exchange);
}
@@ -597,7 +597,7 @@ public class NotifyBuilder {
}
@Override
- public boolean onExchangeFailure(Exchange exchange) {
+ public boolean onExchangeFailed(Exchange exchange) {
if (!received && matches) {
matches = predicate.matches(exchange);
}
@@ -680,7 +680,7 @@ public class NotifyBuilder {
}
@Override
- public boolean onExchangeFailure(Exchange exchange) {
+ public boolean onExchangeFailed(Exchange exchange) {
if (!received) {
sendToMock(exchange);
}
@@ -780,7 +780,7 @@ public class NotifyBuilder {
}
@Override
- public boolean onExchangeFailure(Exchange exchange) {
+ public boolean onExchangeFailed(Exchange exchange) {
if (!received) {
sendToMock(exchange);
}
@@ -908,7 +908,7 @@ public class NotifyBuilder {
}
@Override
- public boolean onExchangeFailure(Exchange exchange) {
+ public boolean onExchangeFailed(Exchange exchange) {
if (!received) {
matchBody(exchange);
}
@@ -1086,8 +1086,8 @@ public class NotifyBuilder {
onExchangeCreated((ExchangeCreatedEvent) event);
} else if (event instanceof ExchangeCompletedEvent) {
onExchangeCompleted((ExchangeCompletedEvent) event);
- } else if (event instanceof ExchangeFailureEvent) {
- onExchangeFailure((ExchangeFailureEvent) event);
+ } else if (event instanceof ExchangeFailedEvent) {
+ onExchangeFailed((ExchangeFailedEvent) event);
}
// now compute whether we matched
@@ -1110,9 +1110,9 @@ public class NotifyBuilder {
}
}
- private void onExchangeFailure(ExchangeFailureEvent event) {
+ private void onExchangeFailed(ExchangeFailedEvent event) {
for (EventPredicateHolder predicate : predicates) {
- predicate.getPredicate().onExchangeFailure(event.getExchange());
+ predicate.getPredicate().onExchangeFailed(event.getExchange());
}
}
@@ -1208,7 +1208,7 @@ public class NotifyBuilder {
* @param exchange the exchange
* @return <tt>true</tt> to allow continue evaluating, <tt>false</tt> to stop immediately
*/
- boolean onExchangeFailure(Exchange exchange);
+ boolean onExchangeFailed(Exchange exchange);
}
private abstract class EventPredicateSupport implements EventPredicate {
@@ -1225,7 +1225,7 @@ public class NotifyBuilder {
return onExchange(exchange);
}
- public boolean onExchangeFailure(Exchange exchange) {
+ public boolean onExchangeFailed(Exchange exchange) {
return onExchange(exchange);
}
@@ -1308,9 +1308,9 @@ public class NotifyBuilder {
return true;
}
- public boolean onExchangeFailure(Exchange exchange) {
+ public boolean onExchangeFailed(Exchange exchange) {
for (EventPredicate predicate : predicates) {
- if (!predicate.onExchangeFailure(exchange)) {
+ if (!predicate.onExchangeFailed(exchange)) {
return false;
}
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultEventFactory.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultEventFactory.java?rev=962496&r1=962495&r2=962496&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultEventFactory.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultEventFactory.java Fri Jul 9 12:06:55 2010
@@ -31,8 +31,9 @@ import org.apache.camel.management.event
import org.apache.camel.management.event.CamelContextStoppingEvent;
import org.apache.camel.management.event.ExchangeCompletedEvent;
import org.apache.camel.management.event.ExchangeCreatedEvent;
-import org.apache.camel.management.event.ExchangeFailureEvent;
+import org.apache.camel.management.event.ExchangeFailedEvent;
import org.apache.camel.management.event.ExchangeFailureHandledEvent;
+import org.apache.camel.management.event.ExchangeRedeliveryEvent;
import org.apache.camel.management.event.ExchangeSentEvent;
import org.apache.camel.management.event.RouteStartedEvent;
import org.apache.camel.management.event.RouteStoppedEvent;
@@ -95,14 +96,18 @@ public class DefaultEventFactory impleme
return new ExchangeCompletedEvent(exchange);
}
- public EventObject createExchangeFailureEvent(Exchange exchange) {
- return new ExchangeFailureEvent(exchange);
+ public EventObject createExchangeFailedEvent(Exchange exchange) {
+ return new ExchangeFailedEvent(exchange);
}
public EventObject createExchangeFailureHandledEvent(Exchange exchange, Processor failureHandler, boolean deadLetterChannel) {
return new ExchangeFailureHandledEvent(exchange, failureHandler, deadLetterChannel);
}
+ public EventObject createExchangeRedeliveryEvent(Exchange exchange, int attempt) {
+ return new ExchangeRedeliveryEvent(exchange, attempt);
+ }
+
public EventObject createExchangeSentEvent(Exchange exchange, Endpoint endpoint, long timeTaken) {
return new ExchangeSentEvent(exchange, endpoint, timeTaken);
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/EventNotifierSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/EventNotifierSupport.java?rev=962496&r1=962495&r2=962496&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/EventNotifierSupport.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/EventNotifierSupport.java Fri Jul 9 12:06:55 2010
@@ -34,7 +34,8 @@ public abstract class EventNotifierSuppo
private boolean ignoreExchangeEvents;
private boolean ignoreExchangeCreatedEvent;
private boolean ignoreExchangeCompletedEvent;
- private boolean ignoreExchangeFailureEvents;
+ private boolean ignoreExchangeFailedEvents;
+ private boolean ignoreExchangeRedeliveryEvents;
private boolean ignoreExchangeSentEvents;
public boolean isIgnoreCamelContextEvents() {
@@ -85,12 +86,20 @@ public abstract class EventNotifierSuppo
this.ignoreExchangeCompletedEvent = ignoreExchangeCompletedEvent;
}
- public boolean isIgnoreExchangeFailureEvents() {
- return ignoreExchangeFailureEvents;
+ public boolean isIgnoreExchangeFailedEvents() {
+ return ignoreExchangeFailedEvents;
}
- public void setIgnoreExchangeFailureEvents(boolean ignoreExchangeFailureEvents) {
- this.ignoreExchangeFailureEvents = ignoreExchangeFailureEvents;
+ public void setIgnoreExchangeFailedEvents(boolean ignoreExchangeFailedEvents) {
+ this.ignoreExchangeFailedEvents = ignoreExchangeFailedEvents;
+ }
+
+ public boolean isIgnoreExchangeRedeliveryEvents() {
+ return ignoreExchangeRedeliveryEvents;
+ }
+
+ public void setIgnoreExchangeRedeliveryEvents(boolean ignoreExchangeRedeliveryEvents) {
+ this.ignoreExchangeRedeliveryEvents = ignoreExchangeRedeliveryEvents;
}
public boolean isIgnoreExchangeSentEvents() {
Copied: camel/trunk/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailedEvent.java (from r962466, camel/trunk/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureEvent.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailedEvent.java?p2=camel/trunk/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailedEvent.java&p1=camel/trunk/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureEvent.java&r1=962466&r2=962496&rev=962496&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailureEvent.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailedEvent.java Fri Jul 9 12:06:55 2010
@@ -21,10 +21,10 @@ import org.apache.camel.Exchange;
/**
* @version $Revision$
*/
-public class ExchangeFailureEvent extends AbstractExchangeEvent {
+public class ExchangeFailedEvent extends AbstractExchangeEvent {
private static final long serialVersionUID = -8484326904627268101L;
- public ExchangeFailureEvent(Exchange source) {
+ public ExchangeFailedEvent(Exchange source) {
super(source);
}
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailedEvent.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/management/event/ExchangeFailedEvent.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Copied: camel/trunk/camel-core/src/main/java/org/apache/camel/management/event/ExchangeRedeliveryEvent.java (from r962466, camel/trunk/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSentEvent.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/event/ExchangeRedeliveryEvent.java?p2=camel/trunk/camel-core/src/main/java/org/apache/camel/management/event/ExchangeRedeliveryEvent.java&p1=camel/trunk/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSentEvent.java&r1=962466&r2=962496&rev=962496&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/event/ExchangeSentEvent.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/event/ExchangeRedeliveryEvent.java Fri Jul 9 12:06:55 2010
@@ -16,35 +16,33 @@
*/
package org.apache.camel.management.event;
-import org.apache.camel.Endpoint;
import org.apache.camel.Exchange;
/**
* @version $Revision$
*/
-public class ExchangeSentEvent extends AbstractExchangeEvent {
- private static final long serialVersionUID = -19248832613958123L;
+public class ExchangeRedeliveryEvent extends AbstractExchangeEvent {
+ private static final long serialVersionUID = -19248832613958122L;
- private final Endpoint endpoint;
- private final long timeTaken;
+ private final int attempt;
- public ExchangeSentEvent(Exchange source, Endpoint endpoint, long timeTaken) {
+ public ExchangeRedeliveryEvent(Exchange source, int attempt) {
super(source);
- this.endpoint = endpoint;
- this.timeTaken = timeTaken;
+ this.attempt = attempt;
}
- public Endpoint getEndpoint() {
- return endpoint;
- }
-
- public long getTimeTaken() {
- return timeTaken;
+ public int getAttempt() {
+ return attempt;
}
@Override
public String toString() {
- return getExchange().getExchangeId() + " exchange " + getExchange() + " sent to: " + endpoint.getEndpointUri() + " took: " + timeTaken + " ms.";
+ Exception cause = getExchange().getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
+ if (cause != null) {
+ return getExchange().getExchangeId() + " exchange redelivery: " + getExchange() + " attempt " + attempt + " cause " + cause;
+ } else {
+ return getExchange().getExchangeId() + " exchange redelivery: " + getExchange() + " attempt " + attempt;
+ }
}
}
\ No newline at end of file
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifier.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifier.java?rev=962496&r1=962495&r2=962496&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifier.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifier.java Fri Jul 9 12:06:55 2010
@@ -18,7 +18,6 @@ package org.apache.camel.management.mbea
import java.util.ArrayList;
import java.util.List;
-
import javax.management.MBeanNotificationInfo;
import javax.management.NotificationBroadcasterSupport;
@@ -103,12 +102,20 @@ public class ManagedEventNotifier extend
getEventNotifier().setIgnoreExchangeCompletedEvent(ignoreExchangeCompletedEvent);
}
- public boolean isIgnoreExchangeFailureEvents() {
- return getEventNotifier().isIgnoreExchangeFailureEvents();
+ public boolean isIgnoreExchangeFailedEvents() {
+ return getEventNotifier().isIgnoreExchangeFailedEvents();
}
- public void setIgnoreExchangeFailureEvents(boolean ignoreExchangeFailureEvents) {
- getEventNotifier().setIgnoreExchangeFailureEvents(ignoreExchangeFailureEvents);
+ public void setIgnoreExchangeFailedEvents(boolean ignoreExchangeFailedEvents) {
+ getEventNotifier().setIgnoreExchangeFailedEvents(ignoreExchangeFailedEvents);
+ }
+
+ public boolean isIgnoreExchangeRedeliveryEvents() {
+ return getEventNotifier().isIgnoreExchangeRedeliveryEvents();
+ }
+
+ public void setIgnoreExchangeRedeliveryEvents(boolean ignoreExchangeRedeliveryEvents) {
+ getEventNotifier().setIgnoreExchangeRedeliveryEvents(ignoreExchangeRedeliveryEvents);
}
public boolean isIgnoreExchangeSentEvents() {
@@ -123,8 +130,8 @@ public class ManagedEventNotifier extend
// all the class names in the event package
String[] names = {"CamelContextStartedEvent", "CamelContextStartingEvent", "CamelContextStartupFailureEvent"
, "CamelContextStopFailureEvent", "CamelContextStoppedEvent", "CamelContextStoppingEvent"
- , "ExchangeCompletedEvent", "ExchangeCreatedEvent", "ExchangeFailureEvent"
- , "ExchangeFailureHandledEvent", "ExchangeSentEvent", "RouteStartedEvent"
+ , "ExchangeCompletedEvent", "ExchangeCreatedEvent", "ExchangeFailedEvent"
+ , "ExchangeFailureHandledEvent", "ExchangeRedeliveryEvents", "ExchangeSentEvent", "RouteStartedEvent"
, "RouteStoppedEvent", "ServiceStartupFailureEvent", "ServiceStopFailureEvent"};
List<MBeanNotificationInfo> infos = new ArrayList<MBeanNotificationInfo>();
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifierMBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifierMBean.java?rev=962496&r1=962495&r2=962496&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifierMBean.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEventNotifierMBean.java Fri Jul 9 12:06:55 2010
@@ -42,9 +42,13 @@ public interface ManagedEventNotifierMBe
void setIgnoreExchangeCompletedEvent(boolean ignoreExchangeCompletedEvent);
- boolean isIgnoreExchangeFailureEvents();
+ boolean isIgnoreExchangeFailedEvents();
- void setIgnoreExchangeFailureEvents(boolean ignoreExchangeFailureEvents);
+ void setIgnoreExchangeFailedEvents(boolean ignoreExchangeFailedEvents);
+
+ boolean isIgnoreExchangeRedeliveryEvents();
+
+ void setIgnoreExchangeRedeliveryEvents(boolean ignoreExchangeRedeliveryEvents);
boolean isIgnoreExchangeSentEvents();
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java?rev=962496&r1=962495&r2=962496&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java Fri Jul 9 12:06:55 2010
@@ -109,6 +109,9 @@ public abstract class RedeliveryErrorHan
log.trace("Redelivering exchangeId: " + exchange.getExchangeId() + " -> " + outputAsync + " for Exchange: " + exchange);
}
+ // emmit event we are doing redelivery
+ EventHelper.notifyExchangeRedelivery(exchange.getContext(), exchange, data.redeliveryCounter);
+
// process the exchange (also redelivery)
boolean sync;
if (data.redeliverFromSync) {
@@ -278,6 +281,9 @@ public abstract class RedeliveryErrorHan
// letting onRedeliver be executed
deliverToOnRedeliveryProcessor(exchange, data);
+
+ // emmit event we are doing redelivery
+ EventHelper.notifyExchangeRedelivery(exchange.getContext(), exchange, data.redeliveryCounter);
}
// process the exchange (also redelivery)
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/spi/EventFactory.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/EventFactory.java?rev=962496&r1=962495&r2=962496&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/spi/EventFactory.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/spi/EventFactory.java Fri Jul 9 12:06:55 2010
@@ -53,7 +53,7 @@ public interface EventFactory {
* Creates an {@link EventObject} for Camel failing to start
*
* @param context camel context
- * @param cause the cause exception
+ * @param cause the cause exception
* @return the created event
*/
EventObject createCamelContextStartupFailureEvent(CamelContext context, Throwable cause);
@@ -62,7 +62,7 @@ public interface EventFactory {
* Creates an {@link EventObject} for Camel failing to stop cleanly
*
* @param context camel context
- * @param cause the cause exception
+ * @param cause the cause exception
* @return the created event
*/
EventObject createCamelContextStopFailureEvent(CamelContext context, Throwable cause);
@@ -88,7 +88,7 @@ public interface EventFactory {
*
* @param context camel context
* @param service the service
- * @param cause the cause exception
+ * @param cause the cause exception
* @return the created event
*/
EventObject createServiceStartupFailureEvent(CamelContext context, Object service, Throwable cause);
@@ -98,7 +98,7 @@ public interface EventFactory {
*
* @param context camel context
* @param service the service
- * @param cause the cause exception
+ * @param cause the cause exception
* @return the created event
*/
EventObject createServiceStopFailureEvent(CamelContext context, Object service, Throwable cause);
@@ -141,24 +141,33 @@ public interface EventFactory {
* @param exchange the exchange
* @return the created event
*/
- EventObject createExchangeFailureEvent(Exchange exchange);
+ EventObject createExchangeFailedEvent(Exchange exchange);
/**
* Creates an {@link EventObject} when an {@link org.apache.camel.Exchange} has failed
* but was handled by the Camel error handlers such as an dead letter channel.
*
- * @param exchange the exchange
- * @param failureHandler the failure handler such as moving the message to a dead letter queue
+ * @param exchange the exchange
+ * @param failureHandler the failure handler such as moving the message to a dead letter queue
* @param deadLetterChannel whether it was a dead letter channel or not handling the failure
* @return the created event
*/
EventObject createExchangeFailureHandledEvent(Exchange exchange, Processor failureHandler, boolean deadLetterChannel);
/**
- * Creates an {@link EventObject} when an {@link org.apache.camel.Exchange} has been sent to the endpoint.
+ * Creates an {@link EventObject} when an {@link org.apache.camel.Exchange} is about to be redelivered
*
* @param exchange the exchange
- * @param endpoint the destination
+ * @param attempt the current redelivery attempt (starts from 1)
+ * @return the created event
+ */
+ EventObject createExchangeRedeliveryEvent(Exchange exchange, int attempt);
+
+ /**
+ * Creates an {@link EventObject} when an {@link org.apache.camel.Exchange} has completely been sent to the endpoint.
+ *
+ * @param exchange the exchange
+ * @param endpoint the destination
* @param timeTaken time in millis taken
* @return the created event
*/
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/spi/EventNotifier.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/EventNotifier.java?rev=962496&r1=962495&r2=962496&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/spi/EventNotifier.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/spi/EventNotifier.java Fri Jul 9 12:06:55 2010
@@ -68,9 +68,13 @@ public interface EventNotifier {
void setIgnoreExchangeCompletedEvent(boolean ignoreExchangeCompletedEvent);
- boolean isIgnoreExchangeFailureEvents();
+ boolean isIgnoreExchangeFailedEvents();
- void setIgnoreExchangeFailureEvents(boolean ignoreExchangeFailureEvents);
+ void setIgnoreExchangeFailedEvents(boolean ignoreExchangeFailureEvents);
+
+ boolean isIgnoreExchangeRedeliveryEvents();
+
+ void setIgnoreExchangeRedeliveryEvents(boolean ignoreExchangeRedeliveryEvents);
boolean isIgnoreExchangeSentEvents();
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/util/EventHelper.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/util/EventHelper.java?rev=962496&r1=962495&r2=962496&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/util/EventHelper.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/util/EventHelper.java Fri Jul 9 12:06:55 2010
@@ -325,7 +325,7 @@ public final class EventHelper {
}
for (EventNotifier notifier : notifiers) {
- if (notifier.isIgnoreExchangeEvents() || notifier.isIgnoreExchangeFailureEvents()) {
+ if (notifier.isIgnoreExchangeEvents() || notifier.isIgnoreExchangeFailedEvents()) {
continue;
}
@@ -333,7 +333,7 @@ public final class EventHelper {
if (factory == null) {
return;
}
- EventObject event = factory.createExchangeFailureEvent(exchange);
+ EventObject event = factory.createExchangeFailedEvent(exchange);
if (event == null) {
return;
}
@@ -349,7 +349,7 @@ public final class EventHelper {
}
for (EventNotifier notifier : notifiers) {
- if (notifier.isIgnoreExchangeEvents() || notifier.isIgnoreExchangeFailureEvents()) {
+ if (notifier.isIgnoreExchangeEvents() || notifier.isIgnoreExchangeFailedEvents()) {
continue;
}
@@ -365,6 +365,29 @@ public final class EventHelper {
}
}
+ public static void notifyExchangeRedelivery(CamelContext context, Exchange exchange, int attempt) {
+ List<EventNotifier> notifiers = context.getManagementStrategy().getEventNotifiers();
+ if (notifiers == null || notifiers.isEmpty()) {
+ return;
+ }
+
+ for (EventNotifier notifier : notifiers) {
+ if (notifier.isIgnoreExchangeEvents() || notifier.isIgnoreExchangeFailedEvents()) {
+ continue;
+ }
+
+ EventFactory factory = context.getManagementStrategy().getEventFactory();
+ if (factory == null) {
+ return;
+ }
+ EventObject event = factory.createExchangeRedeliveryEvent(exchange, attempt);
+ if (event == null) {
+ return;
+ }
+ doNotifyEvent(notifier, event);
+ }
+ }
+
public static void notifyExchangeSent(CamelContext context, Exchange exchange, Endpoint endpoint, long timeTaken) {
List<EventNotifier> notifiers = context.getManagementStrategy().getEventNotifiers();
if (notifiers == null || notifiers.isEmpty()) {
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/management/EventNotifierEventsTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/management/EventNotifierEventsTest.java?rev=962496&r1=962495&r2=962496&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/management/EventNotifierEventsTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/management/EventNotifierEventsTest.java Fri Jul 9 12:06:55 2010
@@ -30,7 +30,7 @@ import org.apache.camel.management.event
import org.apache.camel.management.event.CamelContextStoppingEvent;
import org.apache.camel.management.event.ExchangeCompletedEvent;
import org.apache.camel.management.event.ExchangeCreatedEvent;
-import org.apache.camel.management.event.ExchangeFailureEvent;
+import org.apache.camel.management.event.ExchangeFailedEvent;
import org.apache.camel.management.event.ExchangeSentEvent;
import org.apache.camel.management.event.RouteStartedEvent;
import org.apache.camel.management.event.RouteStoppedEvent;
@@ -120,7 +120,7 @@ public class EventNotifierEventsTest ext
assertIsInstanceOf(RouteStartedEvent.class, events.get(2));
assertIsInstanceOf(CamelContextStartedEvent.class, events.get(3));
assertIsInstanceOf(ExchangeCreatedEvent.class, events.get(4));
- assertIsInstanceOf(ExchangeFailureEvent.class, events.get(5));
+ assertIsInstanceOf(ExchangeFailedEvent.class, events.get(5));
// this is the sent using the produce template to start the test
assertIsInstanceOf(ExchangeSentEvent.class, events.get(6));
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeSentTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeSentTest.java?rev=962496&r1=962495&r2=962496&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeSentTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/management/EventNotifierExchangeSentTest.java Fri Jul 9 12:06:55 2010
@@ -64,7 +64,8 @@ public class EventNotifierExchangeSentTe
setIgnoreRouteEvents(true);
setIgnoreExchangeCreatedEvent(true);
setIgnoreExchangeCompletedEvent(true);
- setIgnoreExchangeFailureEvents(true);
+ setIgnoreExchangeFailedEvents(true);
+ setIgnoreExchangeRedeliveryEvents(true);
}
@Override
Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/management/EventNotifierRedeliveryEventsTest.java (from r962466, camel/trunk/camel-core/src/test/java/org/apache/camel/management/EventNotifierFailureHandledEventsTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/management/EventNotifierRedeliveryEventsTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/management/EventNotifierRedeliveryEventsTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/management/EventNotifierFailureHandledEventsTest.java&r1=962466&r2=962496&rev=962496&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/management/EventNotifierFailureHandledEventsTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/management/EventNotifierRedeliveryEventsTest.java Fri Jul 9 12:06:55 2010
@@ -24,19 +24,16 @@ import org.apache.camel.CamelContext;
import org.apache.camel.ContextTestSupport;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.management.event.CamelContextStartedEvent;
-import org.apache.camel.management.event.CamelContextStartingEvent;
import org.apache.camel.management.event.ExchangeCompletedEvent;
import org.apache.camel.management.event.ExchangeCreatedEvent;
import org.apache.camel.management.event.ExchangeFailureHandledEvent;
+import org.apache.camel.management.event.ExchangeRedeliveryEvent;
import org.apache.camel.management.event.ExchangeSentEvent;
-import org.apache.camel.management.event.RouteStartedEvent;
-import org.apache.camel.processor.SendProcessor;
/**
* @version $Revision$
*/
-public class EventNotifierFailureHandledEventsTest extends ContextTestSupport {
+public class EventNotifierRedeliveryEventsTest extends ContextTestSupport {
private static List<EventObject> events = new ArrayList<EventObject>();
@@ -70,6 +67,9 @@ public class EventNotifierFailureHandled
@Override
protected void doStart() throws Exception {
+ setIgnoreCamelContextEvents(true);
+ setIgnoreRouteEvents(true);
+ setIgnoreServiceEvents(true);
}
@Override
@@ -79,11 +79,11 @@ public class EventNotifierFailureHandled
return context;
}
- public void testExchangeDeadLetterChannel() throws Exception {
+ public void testExchangeRedeliverySync() throws Exception {
context.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
- errorHandler(deadLetterChannel("mock:dead"));
+ errorHandler(deadLetterChannel("mock:dead").maximumRedeliveries(4));
from("direct:start").throwException(new IllegalArgumentException("Damn"));
}
@@ -94,29 +94,28 @@ public class EventNotifierFailureHandled
template.sendBody("direct:start", "Hello World");
assertMockEndpointsSatisfied();
- assertEquals(8, events.size());
- assertIsInstanceOf(CamelContextStartingEvent.class, events.get(0));
- assertIsInstanceOf(RouteStartedEvent.class, events.get(1));
- assertIsInstanceOf(CamelContextStartedEvent.class, events.get(2));
- assertIsInstanceOf(ExchangeCreatedEvent.class, events.get(3));
-
- ExchangeFailureHandledEvent e = assertIsInstanceOf(ExchangeFailureHandledEvent.class, events.get(4));
- assertEquals("should be DLC", true, e.isDeadLetterChannel());
- SendProcessor send = assertIsInstanceOf(SendProcessor.class, e.getFailureHandler());
- assertEquals("mock://dead", send.getDestination().getEndpointUri());
-
- // dead letter channel will mark the exchange as completed
- assertIsInstanceOf(ExchangeCompletedEvent.class, events.get(5));
- // and the sent will be logged after they are complete sending as it record the time taken as well
- assertIsInstanceOf(ExchangeSentEvent.class, events.get(6));
+ assertEquals(9, events.size());
+
+ assertIsInstanceOf(ExchangeCreatedEvent.class, events.get(0));
+ ExchangeRedeliveryEvent e = assertIsInstanceOf(ExchangeRedeliveryEvent.class, events.get(1));
+ assertEquals(1, e.getAttempt());
+ e = assertIsInstanceOf(ExchangeRedeliveryEvent.class, events.get(2));
+ assertEquals(2, e.getAttempt());
+ e = assertIsInstanceOf(ExchangeRedeliveryEvent.class, events.get(3));
+ assertEquals(3, e.getAttempt());
+ e = assertIsInstanceOf(ExchangeRedeliveryEvent.class, events.get(4));
+ assertEquals(4, e.getAttempt());
+ assertIsInstanceOf(ExchangeFailureHandledEvent.class, events.get(5));
+ assertIsInstanceOf(ExchangeCompletedEvent.class, events.get(6));
assertIsInstanceOf(ExchangeSentEvent.class, events.get(7));
+ assertIsInstanceOf(ExchangeSentEvent.class, events.get(8));
}
- public void testExchangeOnException() throws Exception {
+ public void testExchangeRedeliveryAsync() throws Exception {
context.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
- onException(IllegalArgumentException.class).handled(true).to("mock:dead");
+ errorHandler(deadLetterChannel("mock:dead").maximumRedeliveries(4).asyncDelayedRedelivery().redeliveryDelay(25));
from("direct:start").throwException(new IllegalArgumentException("Damn"));
}
@@ -127,19 +126,21 @@ public class EventNotifierFailureHandled
template.sendBody("direct:start", "Hello World");
assertMockEndpointsSatisfied();
- assertEquals(8, events.size());
- assertIsInstanceOf(CamelContextStartingEvent.class, events.get(0));
- assertIsInstanceOf(RouteStartedEvent.class, events.get(1));
- assertIsInstanceOf(CamelContextStartedEvent.class, events.get(2));
- assertIsInstanceOf(ExchangeCreatedEvent.class, events.get(3));
- assertIsInstanceOf(ExchangeSentEvent.class, events.get(4));
-
- ExchangeFailureHandledEvent e = assertIsInstanceOf(ExchangeFailureHandledEvent.class, events.get(5));
- assertEquals("should NOT be DLC", false, e.isDeadLetterChannel());
+ assertEquals(9, events.size());
- // dead letter channel will mark the exchange as completed
+ assertIsInstanceOf(ExchangeCreatedEvent.class, events.get(0));
+ ExchangeRedeliveryEvent e = assertIsInstanceOf(ExchangeRedeliveryEvent.class, events.get(1));
+ assertEquals(1, e.getAttempt());
+ e = assertIsInstanceOf(ExchangeRedeliveryEvent.class, events.get(2));
+ assertEquals(2, e.getAttempt());
+ e = assertIsInstanceOf(ExchangeRedeliveryEvent.class, events.get(3));
+ assertEquals(3, e.getAttempt());
+ e = assertIsInstanceOf(ExchangeRedeliveryEvent.class, events.get(4));
+ assertEquals(4, e.getAttempt());
+ assertIsInstanceOf(ExchangeFailureHandledEvent.class, events.get(5));
assertIsInstanceOf(ExchangeCompletedEvent.class, events.get(6));
assertIsInstanceOf(ExchangeSentEvent.class, events.get(7));
+ assertIsInstanceOf(ExchangeSentEvent.class, events.get(8));
}
}
\ No newline at end of file
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/management/MultipleEventNotifierEventsTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/management/MultipleEventNotifierEventsTest.java?rev=962496&r1=962495&r2=962496&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/management/MultipleEventNotifierEventsTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/management/MultipleEventNotifierEventsTest.java Fri Jul 9 12:06:55 2010
@@ -30,7 +30,7 @@ import org.apache.camel.management.event
import org.apache.camel.management.event.CamelContextStoppingEvent;
import org.apache.camel.management.event.ExchangeCompletedEvent;
import org.apache.camel.management.event.ExchangeCreatedEvent;
-import org.apache.camel.management.event.ExchangeFailureEvent;
+import org.apache.camel.management.event.ExchangeFailedEvent;
import org.apache.camel.management.event.ExchangeSentEvent;
import org.apache.camel.management.event.RouteStartedEvent;
import org.apache.camel.management.event.RouteStoppedEvent;
@@ -149,14 +149,14 @@ public class MultipleEventNotifierEvents
assertIsInstanceOf(RouteStartedEvent.class, events.get(2));
assertIsInstanceOf(CamelContextStartedEvent.class, events.get(3));
assertIsInstanceOf(ExchangeCreatedEvent.class, events.get(4));
- assertIsInstanceOf(ExchangeFailureEvent.class, events.get(5));
+ assertIsInstanceOf(ExchangeFailedEvent.class, events.get(5));
assertIsInstanceOf(ExchangeSentEvent.class, events.get(6));
assertEquals(3, events2.size());
context.stop();
assertIsInstanceOf(ExchangeCreatedEvent.class, events2.get(0));
- assertIsInstanceOf(ExchangeFailureEvent.class, events2.get(1));
+ assertIsInstanceOf(ExchangeFailedEvent.class, events2.get(1));
assertIsInstanceOf(ExchangeSentEvent.class, events2.get(2));
assertEquals(11, events.size());
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugExceptionEventBreakpointTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugExceptionEventBreakpointTest.java?rev=962496&r1=962495&r2=962496&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugExceptionEventBreakpointTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DebugExceptionEventBreakpointTest.java Fri Jul 9 12:06:55 2010
@@ -27,7 +27,7 @@ import org.apache.camel.impl.BreakpointS
import org.apache.camel.impl.ConditionSupport;
import org.apache.camel.impl.DefaultDebugger;
import org.apache.camel.management.event.AbstractExchangeEvent;
-import org.apache.camel.management.event.ExchangeFailureEvent;
+import org.apache.camel.management.event.ExchangeFailedEvent;
import org.apache.camel.model.ProcessorDefinition;
import org.apache.camel.spi.Breakpoint;
import org.apache.camel.spi.Condition;
@@ -55,7 +55,7 @@ public class DebugExceptionEventBreakpoi
exceptionCondition = new ConditionSupport() {
public boolean matchEvent(Exchange exchange, EventObject event) {
- return event instanceof ExchangeFailureEvent;
+ return event instanceof ExchangeFailedEvent;
}
};
}