比如下面有段代码:
//数据库操作
XXXX
//队列操作
QQQQ
数据库操作失败了可以利用事务rollback
但如果数据库操作成功,而队列操作失败,这怎么rollback?
或者这个时候应该采取什么方案来保证两个操作的事务性。
比如下面有段代码:
//数据库操作
XXXX
//队列操作
QQQQ
数据库操作失败了可以利用事务rollback
但如果数据库操作成功,而队列操作失败,这怎么rollback?
或者这个时候应该采取什么方案来保证两个操作的事务性。
try {
//数据库操作
XXXX
//队列操作
QQQQ
DB::commit();
} catch (Exception $e) {
DB::rollback();
}
15 回答8.4k 阅读
7 回答5.2k 阅读
6 回答6.9k 阅读✓ 已解决
8 回答6.2k 阅读
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答2.9k 阅读✓ 已解决
这是一个典型的分布式事务的应用场景,如果你们系统中引入了分布式事务很简单。如果没引入,可以用一下的做法实现:
这样不会影响你的业务逻辑。