【问题标题】:How to do work after a transaction has committed事务提交后如何工作
【发布时间】:2013-07-12 07:07:44
【问题描述】:

我正在使用 NServiceBus 在将信息保存到数据库的处理程序中执行一些工作。作为该过程的一部分,我通过网络套接字发送一条消息,告诉客户更新他们的信息。

问题在于,由于数据库工作是在事务中执行的,因此接收 Web 套接字消息的客户端可能会在事务提交之前尝试读取数据,从而导致返回过时的数据。

由于整个处理程序在事务范围内运行,因此不可能仅在事务结束时执行此工作。事务提交后是否有允许我执行工作的钩子?

或者,我想创建一个“交易发布者”,发布者将在其中参与交易,但这似乎并不那么简单。

您认为解决此问题的最佳方法是什么?禁用事务不是一种选择。

例如,在尝试发送邮件时会遇到类似的问题。即我只想在事务提交后发送邮件。

【问题讨论】:

    标签: .net c#-4.0 transactions nservicebus transactional


    【解决方案1】:

    作为您当前交易的一部分,向(您自己/另一个端点)发送一条消息,告诉它例如发送邮件,或联系网络套接字。

    只有在事务提交时才会真正发送消息 - 然后在 that 消息的处理程序中,您可以执行原始事务提交后应该发生的工作。

    【讨论】:

      猜你喜欢
      • 2015-11-23
      • 2014-11-04
      • 2018-01-14
      • 2015-12-17
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 2016-10-23
      • 1970-01-01
      相关资源
      最近更新 更多