* GH-1140: CommonErrorHandler per consumer binding
Setting CommonErrorHandler on consumer binding through its bean name.
If present, binder will resolve this bean and assign it on the listener
container.
Resolves https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/1140
* Addressing PR review
* 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.
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
* Kafka Streams function detection improvements
Allow Kafka Streams functions defined as Component beans
to be candidates for establishing bindings. Currently, Kafka Streams
functions need to be written as functional beans using @Bean.
Adding this improvement so that if applications prefer to write
the business logic using @Component, then it is possible to do so.
Adding test cases to verify the behavior.
Resolves https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/1030
* Kafka Streams functions and bean name overriding
Whn Kafka Streams function bean names are overridden,
there is an issue with scanning it properly for binding.
Addressing this issue.
* Adding docs for Component based model
* Addressing PR review comments
Introducing the capability of routing records based on
event types. If a header in the incoming record contains
the event type set on the binding, then the function
associated with that binding gets invoked.
Adding test/docs.
Resolves https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/1003
Fixed typo `springc` to `spring` in two lines:
`spring.cloud.stream.function.bindings.process-in-0=users`
`spring.cloud.stream.function.bindings.process-in-0=regions`
Add a new producer extended property for allowNonTransactional.
When set to true, records published to this output binding will
not be run in a transaction, unless one is already in process.
By default, all ouput bindings associated with a transactional
binder publishes in a new transaction. This new property can be
used to override this behavior.
Addressing PR review comments.
Resolves https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/990
* Copy cert files from classpath to file-system
If `ssl.truststore.location` and `ssl.keystore.location` are
provided as classpath resources, convert them to absolute paths
on the filesystem. This is because of a restriction in the Kafka client
in which it does not allow certificates to be read from the classpath.
See these issues for more details:
https://issues.apache.org/jira/browse/KAFKA-7685https://cwiki.apache.org/confluence/display/KAFKA/KIP-398%3A+Support+reading+trust+store+from+classpath
This commit allows the Spring Cloud Stream application to provide the
cert files as classpath: reosources, but the binder internally move
them to a locations on the local filesystem and then use that absolute
path as the value for cert locations. Adding properties for optional paths
to move the files to. If no values are provided for these properties,
then use the system's /tmp directory.
Adding tests and docs.
Resolves https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/985
* Addressing PR review comments
* Addressing further PR review comments
* Consolidate keystore/truststore filesystem locations into a single property
* Addressing PR review