【发布时间】:2013-07-22 12:26:19
【问题描述】:
想象一下情况:
var txn = new DatabaseTransaction();
var entry = txn.Database.Load<Entry>(id);
entry.Token = "123";
txn.Database.Update(entry);
PublishRabbitMqMessage(new EntryUpdatedMessage { ID = entry.ID });
// A bit more of processing
txn.Commit();
现在EntryUpdatedMessage 的使用者可能会在事务txn 提交之前收到此消息,因此将无法看到更新。
现在,我知道 RabbitMQ 本身确实支持事务,但我们不能真正使用它们,因为我们为每次发布创建一个新的 IModel 并且在我们的场景中拥有每个线程模型确实很麻烦(ASP.NET web应用程序)。
我想过在提交数据库事务时发布一个消息列表,但这是一个非常糟糕的解决方案。
处理这个问题的正确方法是什么?
【问题讨论】:
标签: transactions rabbitmq