* TracingChannelInterceptor: simple refactoring
* * More clean up in the `TracingChannelInterceptor`
- Move Spring Cloud Stream classes logic into `static` methods
to avoid eager load for those classes which are not present on CP
- Remove `emptyMessage()` since the contract for `ChannelInterceptor`
never accept a `null`
- Remove thread state manipulation from the `postReceive()` since
no one takes care about thread local afterwards
- Remove `afterReceiveCompletion()` in favor of its `default` impl
in the interface: we don't do thread local manipulation for `receive()`
since `afterReceiveCompletion()` is called *before* the message is really
returned to the target subscriber on the channel
* * Restore span manipulation for `receive()`.
Even if we don't need a thread local store, we still
need to call `span.end()` and set an exception tag
to it if any.
So, just reuse an existing API which includes thread local.
Even if we don't need it logically, there might be some
other interceptors in between which would like to take a
span from thread local do something even on that "void"
`receive()` operation
* Wraps producer / consumer once only
without this change we can wrap the kafka consumer / producer multiple times. First via post processors, second via aspect
with this change we're doing it only once via post processors. we do not wrap factories
fixes gh-1921
without this change a default Feign.Builder doesn't have its feign.Client instrumented
with this change we're using reflection to instrument that Client
fixes gh-1870
* Don't allow double Gateway instrumentation
with this change we're doing both HeaderFilter based Gateway instrumentation and the Netty Client one.
with this change we're conditionally enabling the HeaderFilter instrumentation only when there is no Netty Client one present on the classpath.
fixes gh-1840
without this change we're registering the TracingFilter twice. Once, since it's a bean and second time via the FilterRegistrationBean.
with this change we're not registering the TracingFilter as a bean. It's been final so nobody could actually extend it so we're not breaking the compatibility.
fixes gh-1839