我目前处于需要提交两个事务的情况,一个指向数据库(postgres,与 npgsql 库交互),另一个在 kafka 消息总线上(与 confluent.kafka 库交互)。
两者都支持在事务中发送/插入数据,但我目前在确定我应该如何提交数据库事务和消息总线事务时遇到问题,因为我需要对另一个执行回滚以防它失败。
我最初的策略是做一个
try
{
database.commit()
}
catch
{
messagebus.abort();
throw;
}
messagebus.commit()
但这不包括向 kafka 提交更改失败、触发回滚的情况。
无论如何,我能以某种方式确保这两种情况吗?