我一直在开发一个利用1.0.0版本的云流运动绑定器(https://github.com/spring-cloud/spring-cloud-stream-binder-aws-kinesis)的项目。我的应用程序正在使用一个入站通道(运动流1)。我的应用程序本质上是读取修改并将新消息写入出站通道(运动流2)。
我能够一次读取批次100,200条记录中的消息。但是,在写入出站流时,我看不到配置出站通道以执行与kinesis流API的PutRecordsRequest等效的批处理写入的方法。
有人能够使用云流输出通道执行类似的操作吗?
谢谢。
答案 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);
}