Dear Spring Community!
Both milestones are available in the Spring Milestone repository and they can be consumed as maven dependencies:
<dependency> <groupId>org.springframework.integration</groupId> <artifactId>spring-integration-aws</artifactId> <version>2.0.0.M2</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-stream-binder-kinesis</artifactId> <version>1.0.0.M2</version> </dependency>
These Milestones are good effort of the team and some third-party contributors after valuable feedback from the community via StackOverflow questions, Gitter chats, bug reports and feature request. So, thank you everyone involved!
Here are changes since the previously announced Milestone 1:
KinesisMessageDrivenChannelAdapterhas been improved for fault tolerance when intermittent network errors happen in the AWS Client.
Checkpointerhas been improved to be based on the
ConcurrentMetadataStorefor better concurrent interactions, especially in cluster environment - consumer groups.
A headers mapping mechanism has been implemented for the
SnsHeaderMapperas out-of-the-box implementations, respectively.
Since AWS Kinesis doesn’t provide any headers notations, we implemented workaround via embedding headers into the Kinesis
Recordbody. For this purpose the
KinesisMessageDrivenChannelAdaptershould be configured with the
InboundMessageMapper, respectively. As a good choice an out-of-the-box Spring Integration
EmbeddedJsonHeadersMessageMappercan be used on both side to carry any desired message headers over AWS Kinesis.
KinesisMessageDrivenChannelAdapterhas also been supplied with the logic to convert records when
KinesisMessageChannelBinderhas been updated according the latest changes and fixes in the Spring Cloud Stream and Spring Integration AWS.
Also a new
rawRecordslistener mode has been introduced. By default the Kinesis Binder is configured for
recordmode where the message to emit contains payload as
bytefor the downstream conversion by the Spring Cloud Stream. The
batchmode now produces a
List<byte>and this new
rawRecordsmode produces a message with a payload as
List<Record>- and all the conversion logic to business model is up to end-user in the target
As usual any feedback, feature ideas, critics, bug reports and questions are welcome via appropriate communication channels!