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