事务提交后如何工作

时间:2013-07-12 07:07:45

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

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

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

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

或者我想创建一个“交易发布者”,发布者将在交易中登记,但这似乎并不那么直接。

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

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

1 个答案:

答案 0 :(得分:4)

作为当前交易的一部分,向(您自己/另一个端点)发送消息,告知其例如发送邮件,或联系网络插座。

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