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

Reply via email to