限制每页的记录数和 DynamoDB 中的页数

Limiting the records per page and the number of pages in DynamoDB

我正在使用 DynamoDBEnchancedAsyncClient 通过 GSIpagination 查询 DynamoDB。下面是我用来实现相同目的的代码。我想限制每页的项目数和发送给 Flux

订阅者的页数
DynamoDBAsyncIndex<Customer> secindex= dynamodbasyncenhancedclient.table(Customer, Customer_Schema).index(GSI_INDEX_NAME)

SdkPublisher<Page<Customer>> query = secindex.query(QueryEnhancedRequest.builder().queryConditional(queryconditional)).limit(2).build()

Flux.from(PagePublisher.create(query).items().limit(5))

我所做的一些观察是

QueryEnhancedRequest中的limit(2)限制了每页的项目数为2。我通过订阅SDKPublisher查看了它。

  1. 但是我想限制发送给上述 Flux 订阅者的页面,但是 limit(5) 没有给出想要的结果。有什么方法可以限制从上面 flux?

    发出的页数
  2. 是否有任何方法可以限制从 DDB 为特定查询请求获取的页面数量?

调用时

SdkPublisher<Page<Customer>> query = secindex.query(QueryEnhancedRequest.builder().queryConditional(queryconditional)).limit(2).build()

limit(2)PagePublisher 作为 DynamoDbAsyncIndex#query 结果的结果时被调用。为了提供 QueryEnhancedRequest#limit 你应该在 QueryEnhancedRequest.Builder:

上调用 limit
secindex.query(QueryEnhancedRequest.builder().queryConditional(queryconditional).limit(2).build())

另一方面,PagePublisher.create(query) 结果将是发布者从查询结果页面发出扁平化项目,即将所有页面项目作为结果序列发出。 要设置发射 Pages 的限制,您应该在查询结果 SdkPublisher<Page<Customer>>:

上设置 limit
Flux.from(PagePublisher.create(query.limit(5)).items())