if (exchange != null) {
exchange.setException(e);
}
} finally {
if (exchange != null && exchange.getException() == null) {
long timeTaken = watch.stop();
// emit event that the exchange was sent to the endpoint
EventHelper.notifyExchangeSent(exchange.getContext(), exchange, endpoint, timeTaken);
}
if (producer instanceof ServicePoolAware) {
// release back to the pool