集成测试使用不一致读取的 DynamoDB 客户端?

Integration testing a DynamoDB client which uses inconsistent reads?

情况:

  1. 一个 web 服务 和一个 API 从 DynamoDB 读取记录。它使用最终一致性读取(GetItem 默认模式)
  2. 集成测试由两个步骤组成:
    • 在 DynamoDB 中创建测试数据
    • 调用该服务以验证它是否返回预期结果

我担心由于数据的最终一致性,这个测试注定是脆弱的。

如果我尝试在使用 GetItem withConsistenRead=true 写入后立即验证数据,它只能保证数据已写入 大多数数据库副本,但不是全部,因此被测服务在下一步中仍有机会从未更新的副本中读取。

有没有办法确保在继续之前数据已写入 所有 个 DynamoDB 副本?

数据通常在内到达所有地理分布的副本。

我的建议是等待(即 Java 术语睡眠几秒钟)几秒钟,然后调用 Web 服务应该会产生所需的结果。

将数据插入 DynamoDB 后 table,等待几秒钟再调用网络服务。

Eventually Consistent Reads (Default) – the eventual consistency option maximizes your read throughput. However, an eventually consistent read might not reflect the results of a recently completed write. Consistency across all copies of data is usually reached within a second. Repeating a read after a short time should return the updated data.