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.

Reply via email to