* do not copy truststore, if "ssl.truststore.location" is set to empty string (e.g. ssl.truststore.location:{ENV_VARIABLE}) via KafkaBinderConfigurataionProperties.
* Thread Safety Issue in serializeOnOutbound Method of KafkaStreamsMessageConversionDelegate
* Wrapped perRecordContentTypeHolder with ThreadLocal
* update year and author
Fixes: #2901
* Rework an observation for Rabbit Binder
The observation propagation doesn't work in multi-binder configuration
* Remove `ObservationAutoConfiguration` since it is not visible in case of multi-binder configuration
* Instead move `setObservationEnabled` flag setting to the `RabbitMessageChannelBinder`
* Add `io.micrometer.observation.ObservationRegistry` into `shared.beans` to make it visible for binder-specific application context
* Add `RabbitMultiBinderObservationTests` integration test where Rabbit Binder is in a multi-binder environment
As a side effect, this fixes an observation propagation for the Kafka binder as well in the multi-binder environment.
Its configuration is OK, but an `ObservationRegistry` must make it visible for the binder-specific application context.
See the mentioned `shared. beans`
Related to https://github.com/spring-cloud/spring-cloud-stream/issues/2901
Also see https://github.com/spring-cloud/spring-cloud-stream/issues/2902 for possible evolution
* Update the copyright of the affected classes
Fixes: https://github.com/spring-cloud/spring-cloud-stream/issues/2882
When providing schema registry SSL truststore and keystore properties
as classpath URL's under Kafka binder configuration, the transformations
of them into corresponding filesystem URL's are not currenlty propagated
into producerProperties and consumerProperties under binder configuration.
This is ncessary for certain serializer/deserializer to work.
See the related GH issue for more context on this.
The expectation is like this `Binder<T, C extends ConsumerProperties, P extends ProducerProperties>`
so, the `BinderCustomizer` must be in extension bounds as well.
* Move Javadocs from the `BinderCustomizer.customize()` to the class level
* Add `BinderCustomizer` verification to the `KafkaConfigCustomizationTests`
- When closing multi-binder contexts, the application throws a StackOverflow error
due to an unnecessary addition of the binder child context as a separate bean
in the main context. This was done previously for testing purposes.
- Disabling the affected tests in the Pulsar binder until we come up with a
different solution.
Resolves https://github.com/spring-cloud/spring-cloud-stream/issues/2870
- The bug for multiplex configuration in ReactorKafkaBinder was resolved
and a method was written for common partition-related operations.
- Refactor KafkaBinderUnitTests
- StreamsBuilderFactoryBeanConfigurer customizaton happpens only after
the StreamsBuilder object is created by the factory bean. This creates
a scenario in which the customizations provided by the application are
skipped by the StreamsBuilder. Addressing this issue.
Resolves https://github.com/spring-cloud/spring-cloud-stream/issues/2857
- When @Configuration or @Component style beans are used in Kafka Streams
binder applications, there exists a regression that prevents the binder
infrastructure to correctly detect the beans. Addressing this issue.
Resolves https://github.com/spring-cloud/spring-cloud-stream/issues/2846
- Add KafkaStreams related native hints (Note: Once we add the
Kafka Streams specific 3rd party hints to the reachability
metadata repository, we will remove those hints from the binder)
- Related changes in DefaultBinderFactory
- KafkaStreamsBindableProxyFactory changes triggered by AOT/native
Resolves https://github.com/spring-cloud/spring-cloud-stream/issues/2323
Addressing PR review comments
Resolves#2832
Since exception is not propogated, adding a trace log allows an optional way for a developer to utilize the defaultRecoverer and still do some basic review of a given exception.
- When there are two methods with the same name but with different type erasures,
Kafka Streams binder sometimes detects the incorrect method. Fixing this issue
by specifically type checking the return type for Kafka Streams types.
Resolves https://github.com/spring-cloud/spring-cloud-stream/issues/2817
- When Kafka Streams branching function is provided as a Component bean,
there is an issue where the raw class check on the return outbound
resolvable type cuases an NPE. Fixing this issue by adding a null check
on the return type's raw class.
Resolves https://github.com/spring-cloud/spring-cloud-stream/issues/2821