Skip to content

Conversation

@artembilan
Copy link
Contributor

@artembilan artembilan commented Nov 20, 2025

  • Introduce spring-cloud-aws-kinesis-stream-binder module (the name could be changed)
  • Mention it in the root POM
  • Manage it as a dependency
  • Also, manage spring-cloud-stream-dependencies
  • Add docs, include an image of Binder architecture

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

💡 Motivation and Context

💚 How did you test it?

📝 Checklist

  • I reviewed submitted code
  • I added tests to verify changes
  • I updated reference documentation to reflect the change
  • All tests passing
  • No breaking changes

🔮 Next steps

@github-actions github-actions bot added type: documentation Documentation or Samples related issue type: dependency-upgrade Dependency version bump labels Nov 20, 2025
Copy link
Member

@MatejNedic MatejNedic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!
Thanks @artembilan

@artembilan
Copy link
Contributor Author

artembilan commented Nov 25, 2025

I've just added DynamoDB Streams support over Kinesis.
This feature was available in some old Kinesis Binder version.
Now, since respective Adapter is based on AWS SDK v2, we are good to restore it.
I know this might overcomplicate this PR, so let me know if that works for your or I should split them into separate PRs.

Another question: what Maven goal should I call to reformat the code properly?

Thanks

@MatejNedic
Copy link
Member

Hey,

we can keep it in a same PR it is fine. Will review it by end of the weekend.

you can run -> mvn spotless::apply

Tnx on PR

* Introduce `spring-cloud-aws-kinesis-stream-binder` module (the name could be changed)
* Mention it in the root POM
* Manage it as a dependency
* Also, manage `spring-cloud-stream-dependencies`
* Add docs, include an image of Binder architecture
* Add `com.amazonaws:dynamodb-streams-kinesis-adapter` dependency which provides
and adapter from DynamoDB Streams Client to Kinesis Client.
That also incudes some convenient API for KCL configuration.
* Add `SpringDynamoDBStreamsAdapterClient` extension to mimic Kinesis API required for the `KinesisMessageDrivenChannelAdapter`
* Support DynamoDB Streams Adapter configuration in the `KclMessageDrivenChannelAdapter`
* Add tests to verify DynamoDB Stream consumption via both `KinesisMessageDrivenChannelAdapter` and `KclMessageDrivenChannelAdapter`
* Improve other KCL tests for race conditions and timing
* Implement DynamoDB Streams support in the Kinesis Binder
* Include `dynamodb-streams-kinesis-adapter` dependency into `spring-cloud-aws-starter-integration-kinesis-client`
since `KclMessageDrivenChannelAdapter` now depends on that adapter API.
* Fix "shard iterator ready" race condition in the `KinesisBinderFunctionalTests`

Related to: spring-cloud/spring-cloud-stream-binder-aws-kinesis#205
* Adapt to the latest dependencies, including new Spring Boot deps for tracing
* Fix `KinesisBinderObservationTests` according to the latest Spring Boot
* Use Spring Cloud Stream `5.0.0`
* Disable `KinesisBinderFunctionalTests` since there is something off with Spring Cloud Stream and batch handling
for the steam to be enabled on the table before performing data manipulation
Looks like the batch consumer for `Message<List<Message<?>>>` cannot be deduced yet.

* Use plain `Consumer<Message<?>>` for the `Message<List<Message<?>>>` from the Kinesis binder
* Fix typos in docs
* Optimize some code flows
in attempt to mitigate race conditions

* Add WARN for received CDC events in the `DynamoDbStreamToKinesisIntegrationTests`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: dependency-upgrade Dependency version bump type: documentation Documentation or Samples related issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants