[ https://issues.apache.org/jira/browse/CAMEL-4354?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13087758#comment-13087758 ]
Claus Ibsen commented on CAMEL-4354: ------------------------------------ Okay the ExchangeSentEvent is being fired to early for async routing engine. For synchronous routing, the event is emitted *after* the producer has completed. For async routing is emitted just after the producer have send, but not waiting for until its done. To keep it consistent we ought to fire the event when the producer is done. Then its the same for sync and async. > header added using an EventNotifier is not present at AggregationStrategy for > http endpoints > -------------------------------------------------------------------------------------------- > > Key: CAMEL-4354 > URL: https://issues.apache.org/jira/browse/CAMEL-4354 > Project: Camel > Issue Type: Bug > Components: camel-core > Affects Versions: 2.8.0 > Environment: linux/windows > Reporter: Marco Crivellaro > Assignee: Claus Ibsen > > A new header added using an EventNotifier is not present when the exchange is > aggregated with an AggregationStrategy. > This is happening only if the enpoint type is http, ftp doesn't have this > issue. > This was working with an early version of 2.8.0-SNAPSHOT > Following the EventNotifier code used. > {code:title=ExchangeSentEventNotifier.java|borderStyle=solid} > public class ExchangeSentEventNotifier extends EventNotifierSupport { > @Override > protected void doStart() throws Exception { > /* > * filter out unwanted events > * we are interested only in ExchangeSentEvent > */ > setIgnoreCamelContextEvents(true); > setIgnoreServiceEvents(true); > setIgnoreRouteEvents(true); > setIgnoreExchangeCreatedEvent(true); > setIgnoreExchangeCompletedEvent(true); > setIgnoreExchangeFailedEvents(true); > setIgnoreExchangeSentEvents(false); > } > @Override > protected void doStop() throws Exception { > } > @Override > public boolean isEnabled(EventObject event) { > return event instanceof ExchangeSentEvent; > } > @Override > public void notify(EventObject event) throws Exception { > if(event.getClass() == ExchangeSentEvent.class){ > ExchangeSentEvent eventSent = (ExchangeSentEvent)event; > > log.debug("Took " + eventSent.getTimeTaken() + " millis to send > to: " + eventSent.getEndpoint()); > //storing time taken to the custom header > eventSent.getExchange().getIn().setHeader("x-time-taken", > eventSent.getTimeTaken()); > > } > > } > } > {code} -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira