我使用 Azure 表存储进行持久化,使用 Azure 服务总线进行传输,我想知道 saga 的处理程序中有哪些事务?它和普通的处理程序一样吗?
我之所以问,是因为我看到数据库更改(通常在环境事务中登记的 SqlBulkCopy)发生多次。在这种情况下,我直接从 Saga 访问数据库以“单线程”处理消息,但它似乎不起作用。
我使用 Azure 表存储进行持久化,使用 Azure 服务总线进行传输,我想知道 saga 的处理程序中有哪些事务?它和普通的处理程序一样吗?
我之所以问,是因为我看到数据库更改(通常在环境事务中登记的 SqlBulkCopy)发生多次。在这种情况下,我直接从 Saga 访问数据库以“单线程”处理消息,但它似乎不起作用。
Azure 服务总线传输仅支持以下传输事务级别
它不支持事务范围级别。这就是你要找的。
这是为什么?Azure 服务总线不允许发生任何环境事务。任何与业务相关的数据操作都将从处理程序事务中排除。为了避免重复的业务数据写入,您需要实现幂等性,以确保在重试消息时不会多次写入相同的业务数据。