Spring Cloud Stream生产者批次

时间:2018-09-28 12:59:24

标签: spring spring-integration spring-cloud-stream

我一直在开发一个利用1.0.0版本的云流运动绑定器(https://github.com/spring-cloud/spring-cloud-stream-binder-aws-kinesis)的项目。我的应用程序正在使用一个入站通道(运动流1)。我的应用程序本质上是读取修改并将新消息写入出站通道(运动流2)。

我能够一次读取批次100,200条记录中的消息。但是,在写入出站流时,我看不到配置出站通道以执行与kinesis流API的PutRecordsRequest等效的批处理写入的方法。

有人能够使用云流输出通道执行类似的操作吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

您只需从PutRecordsRequest返回一个@StreamListener并为输出绑定目标配置.producer.useNativeEncoding = true。这样,@StreamListener的结果将不会转换为byte[],这将成为KinesisMessageHandler的责任,以正确处理该PutRecordsRequest有效负载。现在那是可能的:

if (message.getPayload() instanceof PutRecordsRequest) {
        AsyncHandler<PutRecordsRequest, PutRecordsResult> asyncHandler =
                obtainAsyncHandler(message, (PutRecordsRequest) message.getPayload());

        return this.amazonKinesis.putRecordsAsync((PutRecordsRequest) message.getPayload(), asyncHandler);
    }