The TraceMessageChannelInterceptor should only be added once to a channel. Normally this is the case automatically, but when the application context hierarchy is complex, Spring Integration can occasionally screw up and add the interceptor twice. This change uses a Spring Integration specific API (VetoCapableInterceptor) to prevent the double interceptor from being added.