The producer template also emits the events, so that is why you see more. On Sun, Aug 11, 2013 at 4:02 PM, pmcb55 <[email protected]> wrote: > Hi, > > I'm using Camel 2.11.1 and the > *context.getManagementStrategy().addEventNotifier(new EventNotifierSupport() > { ... });* to gather event timings for my Camel application. > > Everything works fine except I get *two* events fired for every Exchange > sent to my trivial test route. The following test case shows this very > simply (notice it outputs 4 *ExchangeSentEvent*'s for just 2 requests sent, > and my test route only has 1 '.process()' call in it - adding more steps to > the route has no effect!): > > OUTPUT: > --------- > ID-UKDB1764398-51680-1376228112185-0-2 exchange Exchange[Message: [Body is > null]] sent to: Endpoint[direct://testRoute] took: 13 ms. > ID-UKDB1764398-51680-1376228112185-0-2 exchange Exchange[Message: [Body is > null]] sent to: Endpoint[direct://testRoute] took: 14 ms. > ID-UKDB1764398-51680-1376228112185-0-2 exchange Exchange[Message: [Body is > null]] sent to: Endpoint[direct://testRoute] took: 1 ms. > ID-UKDB1764398-51680-1376228112185-0-2 exchange Exchange[Message: [Body is > null]] sent to: Endpoint[direct://testRoute] took: 1 ms. > > > package com.example; > > import java.util.EventObject; > > import org.apache.camel.CamelContext; > import org.apache.camel.Exchange; > import org.apache.camel.Processor; > import org.apache.camel.ProducerTemplate; > import org.apache.camel.builder.RouteBuilder; > import org.apache.camel.impl.DefaultCamelContext; > import org.apache.camel.impl.DefaultExchange; > import org.apache.camel.management.event.ExchangeSentEvent; > import org.apache.camel.support.EventNotifierSupport; > import org.junit.Test; > > public class SentEventTest { > @Test > public void testCamel() throws Exception { > CamelContext context = new DefaultCamelContext(); > > final String routeId = "direct://testRoute"; > context.addRoutes(new RouteBuilder() { > public void configure() { > from(routeId) > .routeId(routeId) > .process(new Processor() { > public void process(Exchange exchange) { > }; > }); > } > }); > > context.getManagementStrategy().addEventNotifier( > new EventNotifierSupport() { > @Override > public void notify(final EventObject event) > throws Exception { > final ExchangeSentEvent sent = > (ExchangeSentEvent) event; > System.out.println(sent); > } > > public boolean isEnabled(final EventObject event) > { > return (event instanceof ExchangeSentEvent); > } > > protected void doStart() throws Exception { > } > > protected void doStop() throws Exception { > } > }); > > context.start(); > ProducerTemplate producer = context.createProducerTemplate(); > Exchange testExchange = new DefaultExchange(context); > producer.send(routeId, testExchange); > producer.send(routeId, testExchange); > context.stop(); > } > } > > > > > > -- > View this message in context: > http://camel.465427.n5.nabble.com/Bug-with-addEventNotifier-fires-two-exchange-sent-events-for-each-Exchange-sent-tp5737086.html > Sent from the Camel - Users mailing list archive at Nabble.com.
-- Claus Ibsen ----------------- Red Hat, Inc. Email: [email protected] Twitter: davsclaus Blog: http://davsclaus.com Author of Camel in Action: http://www.manning.com/ibsen
