【发布时间】:2013-07-12 07:07:44
【问题描述】:
我正在使用 NServiceBus 在将信息保存到数据库的处理程序中执行一些工作。作为该过程的一部分,我通过网络套接字发送一条消息,告诉客户更新他们的信息。
问题在于,由于数据库工作是在事务中执行的,因此接收 Web 套接字消息的客户端可能会在事务提交之前尝试读取数据,从而导致返回过时的数据。
由于整个处理程序在事务范围内运行,因此不可能仅在事务结束时执行此工作。事务提交后是否有允许我执行工作的钩子?
或者,我想创建一个“交易发布者”,发布者将在其中参与交易,但这似乎并不那么简单。
您认为解决此问题的最佳方法是什么?禁用事务不是一种选择。
例如,在尝试发送邮件时会遇到类似的问题。即我只想在事务提交后发送邮件。
【问题讨论】:
标签: .net c#-4.0 transactions nservicebus transactional