This PR safe guards state store instances in case there are multiple KafkaStreams
instances present that have distinct application IDs but share State Store Names.
Change is backwards compatible: In case no KafkaStreams association of the thread
can be found, all local state stores are queried as before.
In case an associated KafkaStreams Instance is found, but required StateStore is
not found in this instance, a warning is issued but backwards compatibility is
preserved by looking up all state stores.
Store within KafkaStreams instance of thread is preferred over "foreign" store with same name.
Warning is issued if requested store is not found within KafkaStreams instance of thread.
The main benefit here is to get rid of randomly selecting stores across all KafkaStreams instances
in case a store is contained within multiple streams instances with same name.
Resolves https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/1161
* Disconnect spring-cloud-scheam-registry-client from Kafka Streams binder
that is used for testing
* Deprecate MessageConverterDelegateSerde
* Remove MessageConverterDelegateSerdeTest
When both regular Kafka and Kafka Streams functions are present,
the code that was added recently for function composition in
Kafka Streams binder was accidentally creating a binadable proxy
factory bean for non Kafka Streams functions. Resolving this issue.
Resovles https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/1156
Coalesce the stream join tests in Kafka Streams binder around the functional model.
Remove duplicating the same join tests using the StreamListener model.
* Consumer/Producer prefix in Kafka Streams binder
Kafka Streams allows the applications to separate the consumer and producer
properties using consumer/producer prefixes. Add these prefixes automatically
if they are missing from the application.
Resolves https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/1065
* Addressing PR review comments
Start Kafka Streams bindgings only when they are not running.
Similarly, stop them only if they are running.
Without these guards in the bindings for KStream, KTable and GlobalKTable,
it may cause NPE's due to the backing concurrent collections in KafkaStreamsRegistry
not finding the proper KafkaStreams object, especially when the StreamsBuilderFactory
bean is already stopped through the binder provided manager.
* Honoring auto startup in Kafka Streams binder
When using Kafka Streams bineder, the processors are started
unconditionally, i.e. autoStartup is always true by default.
If spring.kafka.streams.auto-startup is set, then honor that
as the auto-startup flag in the binder.
Resolves https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/1126
* Addressing PR review comments
Auto startup flag is honored per individual consumer bindings as well.
* Addressing PR review comments
* Making KafkaStreamsRegistry#kafkaStreams set to use a concurrent Set.
Restore Kafka Streams error state behavior in the binder, equivalent
to Kafka Streams prior to 2.8. Starting with 2.8, users can customize
the way uncaught errors are interpreted via an UncaughtExceptionHandler
in the applicaiton. Binder now sets a default handler that shuts down
the Kafka Streams client if thre is an uncaught error.
Resolves https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/1110
At the moment, Kafka Streams binder only allows KStream bindings on the outbound.
There is a delegation mechanism in which we stil can use KStream for output binding
while allowing the applications to provide a KTable type as the function return type.
Update docs.
Resolves https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/1085Resolves#1105
Composed function defintions can start with a `java.util.function.Function`
or `java.util.function.BiFunction` and compose with other functions or consumers.
In the case of a consumer, this needs to be the last unit in the function definition.
`java.util.function.BiConumer` is not eligibe for function composition.
The first component in the definition can be a curried function as well.
Adding tests and docs.
Resolves https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/1088Resolves#1091
Before running the JAAS initilizer security tests, remove reference to
JAAS related config files created previously in other tests. This is done
through clearing a system property (java.security.auth.login.config) in
the tests. Without clearing this property, these tests run into a race condition.
Fixes https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/1094
This comnmit effectively removes changes introduced by a4ad9e2c0b.
Removing spring.factories mechanism of registering binders in preference to using spring.binders.
When destination-is-pattern property is enabled and native deserialization
is used, then Kafka Streams binder does not use the correct Serde types.
Fixing this issue by providing the proper Serdes to the StreamsBuilder.
Resolves https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/1051
When functional beans are discovered from libraries in the classpath,
it causes issues when Kafka Streams functions are scanned and bootstrapped.
Binder expects the users to provide function definition property although the
application does not directly include these functional beans or is aware of it.
Fixing this issue by excluding non kafka streams function from scanning.
Null check around adding micrometer listener to the StreamsBuilder.
Addressing issues raised by the comments here:
https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/1030#issuecomment-804039087