1

我使用 Azure 表存储进行持久化,使用 Azure 服务总线进行传输,我想知道 saga 的处理程序中有哪些事务?它和普通的处理程序一样吗?

我之所以问,是因为我看到数据库更改(通常在环境事务中登记的 SqlBulkCopy)发生多次。在这种情况下,我直接从 Saga 访问数据库以“单线程”处理消息,但它似乎不起作用。

4

1 回答 1

1

Azure 服务总线传输仅支持以下传输事务级别

  1. SendsAtomicWithReceive(默认)
  2. 只接收
  3. 没有任何

它不支持事务范围级别。这就是你要找的。

这是为什么?Azure 服务总线不允许发生任何环境事务。任何与业务相关的数据操作都将从处理程序事务中排除。为了避免重复的业务数据写入,您需要实现幂等性,以确保在重试消息时不会多次写入相同的业务数据。

于 2019-08-03T07:52:15.407 回答