AWS QLDB:如何通过回调或Promise判断事务提交状态?
关于AWS QLDB事务提交状态的判断
当然可以通过Promise的状态来判断事务的提交结果:
- 事务成功提交:
executeLambda方法返回的Promise会被resolved,此时可确认事务已完成提交(代码中的查询及可能的插入操作均成功执行)。 - 事务提交失败:若事务过程中出现错误(比如并发冲突、语法错误、权限问题等),
executeLambda返回的Promise会被rejected,你可以通过try/catch捕获对应错误信息,以此判断事务失败。
针对你的代码,可以调整为用try/catch捕获状态:
try { await qldbDriver.executeLambda(async (txn: TransactionExecutor) => { const check = (await txn.execute('SELECT * FROM Accounts WHERE owner = ?', document.owner)).getResultList(); if (check.length === 0) { await txn.execute('INSERT INTO Accounts ?', document) } }); console.log('事务提交成功'); // 这里处理成功后的逻辑 } catch (error) { console.error('事务提交失败:', error); // 这里处理失败后的逻辑,比如根据错误类型做重试或告警 }
需要注意的是,QLDB的executeLambda会自动处理事务的重试逻辑(比如遇到乐观并发控制冲突时),只有当重试耗尽或出现不可重试的错误时,才会抛出错误供你捕获。
内容的提问来源于stack exchange,提问作者Vingtoft
相关产品推荐
相关产品推荐

