Add support for aggregated Kinesis records in SpringBootKinesisEventHandler

The current implementation of SpringBootKinesisEventHandler only handles
non-aggregated events. Attempting to process aggregated events caused
ungraceful failure.
This commit fixes that by de-aggregating any events before performing
conversion. Non-aggregated events are still handled transparently.
In addition, detection of Message<T> input is performed, and
output messages are wrapped accordingly.
This commit is contained in:
Halvdan Hoem Grelland
2018-03-18 13:42:44 +01:00
committed by Dave Syer
parent 344ee9a689
commit 2c6f71d275
3 changed files with 319 additions and 7 deletions

View File

@@ -21,6 +21,9 @@
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<aws-lambda-events.version>2.0.2</aws-lambda-events.version>
<aws-java-sdk.version>1.11.163</aws-java-sdk.version>
<aws-kinesis-deaggregator.version>1.0.3</aws-kinesis-deaggregator.version>
<aws-kinesis-aggregator.version>1.0.3</aws-kinesis-aggregator.version>
</properties>
<dependencies>
@@ -52,6 +55,16 @@
<version>${aws-lambda-events.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-kinesis</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>amazon-kinesis-deaggregator</artifactId>
<version>${aws-kinesis-deaggregator.version}</version>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-core</artifactId>
@@ -61,7 +74,24 @@
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>amazon-kinesis-aggregator</artifactId>
<version>${aws-kinesis-aggregator.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-bom</artifactId>
<version>${aws-java-sdk.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<repositories>
<repository>