} catch (Exception e) {
exchange.setException(e);
} finally {
// pop the block so by next round we have the same staring point and thus the tracing looks accurate
if (traced != null) {
traced.popBlock();
}
if (processor instanceof Producer) {
long timeTaken = watch.stop();
Endpoint endpoint = ((Producer) processor).getEndpoint();
// emit event that the exchange was sent to the endpoint