Kinesis-Binder-29: Add RECEIVED headers

Fixes: spring-cloud/spring-cloud-stream-binder-aws-kinesis#29

Previously the same header name has been used for sending and receiving
operations (e.g. Kinesis `stream`).
This causes collisions in streaming processes when we receive message
from the AWS and send it downstream to AWS.
The header presence has a precedence over configured property/expression.
Therefore we send message to the AWS (e.g. Kinesis) using wrong
destination or other correlation properties

* Add `AwsHeaders.RECEIVED_*` headers to avoid collisions
* Remove Jackson dependency since it is managed now properly by SC-AWS
This commit is contained in:
Artem Bilan
2017-12-22 12:21:22 -05:00
parent 42a4a45de8
commit 3940a8fb6a
5 changed files with 41 additions and 23 deletions

View File

@@ -126,10 +126,10 @@ public class KinesisMessageDrivenChannelAdapterTests {
assertThat(message).isNotNull();
assertThat(message.getPayload()).isEqualTo("foo");
MessageHeaders headers = message.getHeaders();
assertThat(headers.get(AwsHeaders.PARTITION_KEY)).isEqualTo("partition1");
assertThat(headers.get(AwsHeaders.RECEIVED_PARTITION_KEY)).isEqualTo("partition1");
assertThat(headers.get(AwsHeaders.SHARD)).isEqualTo("1");
assertThat(headers.get(AwsHeaders.SEQUENCE_NUMBER)).isEqualTo("1");
assertThat(headers.get(AwsHeaders.STREAM)).isEqualTo(STREAM1);
assertThat(headers.get(AwsHeaders.RECEIVED_SEQUENCE_NUMBER)).isEqualTo("1");
assertThat(headers.get(AwsHeaders.RECEIVED_STREAM)).isEqualTo(STREAM1);
Checkpointer checkpointer = headers.get(AwsHeaders.CHECKPOINTER, Checkpointer.class);
assertThat(checkpointer).isNotNull();
@@ -139,10 +139,10 @@ public class KinesisMessageDrivenChannelAdapterTests {
assertThat(message).isNotNull();
assertThat(message.getPayload()).isEqualTo("bar");
headers = message.getHeaders();
assertThat(headers.get(AwsHeaders.PARTITION_KEY)).isEqualTo("partition1");
assertThat(headers.get(AwsHeaders.RECEIVED_PARTITION_KEY)).isEqualTo("partition1");
assertThat(headers.get(AwsHeaders.SHARD)).isEqualTo("1");
assertThat(headers.get(AwsHeaders.SEQUENCE_NUMBER)).isEqualTo("2");
assertThat(headers.get(AwsHeaders.STREAM)).isEqualTo(STREAM1);
assertThat(headers.get(AwsHeaders.RECEIVED_SEQUENCE_NUMBER)).isEqualTo("2");
assertThat(headers.get(AwsHeaders.RECEIVED_STREAM)).isEqualTo(STREAM1);
assertThat(this.kinesisChannel.receive(10)).isNull();