0

我正在尝试使用 v2 库以非阻塞方式持久化和检索数据。DynamoDBEnhancedAsyncClient的 Put 方法返回 CompletableFuture 对象,但扫描和查询方法返回 PagePublisher 对象——这往往告诉我这是一个阻塞调用。有人可以帮我理解/解决这个问题。我想实现端到端的非阻塞调用。我尝试使用DynamoAsyncClient并且效果很好,但我想摆脱使用DynamoDBEnhancedAsyncClient * 手动映射对象,但我没有看到返回 CompletableFutures 的方法。

这是我的代码块

DynamoDbAsyncTable<User> asyncTable = dynamoDBEnhancedAsyncClient.table("userTable", TableSchema.fromBeab(User.class));
Map<String, AttribiuteValue> expVal = new HashMap();
expVal.put(":val", AttributeValue.builder().n(String.valueOf(userId)).build());
Expression exp = Expression.builder().expression("userId = :val").expressionValues(expVal).build();
ScanEnhancedRequest req  = ScanEnhancedRequest.builder().filterExpression(exp).build();
PagePublisher<User> pagePublisher = asyncTable.scan(req);

我使用的依赖项

<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>dynamodb</artifactid>
<version>2.10.76</version>
</dependency>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>dynamodb-enhanced</artifactid>
<version>2.12.0</version>
</dependency>
4

0 回答 0