java - 使用 KCL 2.x 从 KinesisStream 获取 DynamoDBEvents
问题描述
从我使用 KCL 客户端获得的 KinesisClientRecord(记录)中,我可以通过执行以下操作从流中获取表示 ddb 更新事件的 JSON 对象:
String recordData = StandardCharsets.UTF_8.decode(record.data()).toString();
JSONObject kinesisRecordObject = new JSONObject(recordData);
现在,我想访问从 dynamoDB 获得的字段,但我无法将其反序列化为 DynamoDB JSON 而不是标准的,正如本文将 DynamoDB JSON 转换为 Standard JSON with Java中所解释的那样。那里给出的解决方案适用于 DynamoDBStreamRecord,但不适用于 KinesisClientRecord(我正在使用)你能告诉我如何实现这一步吗?对于 KCL 1.x,我发现可以使用 KCL Adapter,但我使用的是 KCL 2.x!
如何反序列化它以获取 DDB 更新中的字段?
解决方案
使用 KCL 2 时,您会从 Kinesis 获得 CommittableRecord 对象。从中您需要提取 UTF 8 编码的 records().data()(默认情况下)。解码后得到的 JSON 字符串可以转换成想要的 POJO
像这样的东西
String recordData =
new StringBuffer(StandardCharsets.UTF_8.decode(committableRecordObject.record().data()))
.toString();
推荐阅读
- c++ - Floating point exception and coredump using Virtual TMB
- javascript - Why doesn't clicking my button do anything?
- esp8266 - Getting Error code -1 (HTTP_CONNECTION_REFUSED) after first connection
- c# - How to Execute a SQL query while a Data Reader is opened?
- macos - Visual Studio team services for Mac
- android - 如何将多个值添加到 Firestore 中的同一字段
- spring-boot - 该类不在受信任的包中,但出现在受信任的包列表中
- java - MediaPlayer noSound OSX
- eclipse - when() not working in RestAssured using eclipse
- android - Refresh wheel freezes until onRefresh() is finished