【发布时间】:2022-11-14 08:15:20
【问题描述】:
用例: 用户创建会议预约,应在预约前 24 小时/1 小时/5 分钟收到通知。 当前实现:
- 创建约会时,它使用 ttl 保存在 DynamoDB 中(约会时间 - 24 小时)
- 当 ttl 过期时,DynamoDB 会删除此项。
- 有一个 lambda 监听 DynamoDB 流事件并由之前的操作触发。项目中还有 3 个额外的布尔标志:24 小时、1 小时、5 分钟。当项目在 24 小时之前被删除时,此 lambda 将 24hours 标志设置为 true(以便在下一步中知道 24 小时之前的推送通知已经发送)并使用新的 ttl 再次保存(预约时间 - 1 小时),推送通知已发送。
- 与 2 和 3 相同:ttl 已过期,lambda 将 1hour 标志设置为 true 并设置新的 ttl(约会时间 - 5 分钟)并再次保存项目,发送推送通知。
- 再次:ttl 过期,发送推送通知。
关注点:DynamoDB 不保证项目将在 ttl 过期时准确删除。
还有其他解决方案:比我的更有效吗?
当前堆栈:AWS/无服务器框架/NodeJS。
【问题讨论】:
标签: node.js typescript amazon-web-services aws-lambda serverless