RabbitMQ in Datenbanktransaktionen integrieren
Stellen Sie sich die Situation vor:
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();
Jetzt ein Verbraucher vonEntryUpdatedMessage
kann möglicherweise diese Nachricht erhaltenVor die Transaktiontxn
ist festgeschrieben und kann daher das Update nicht sehen.
Jetzt weiß ich, dass RabbitMQ Transaktionen von selbst unterstützt, aber wir können sie nicht wirklich verwenden, weil wir eine neue erstellenIModel
In unserem Szenario (ASP.NET-Webanwendung) ist es sehr umständlich, für jede Veröffentlichung ein Pro-Thread-Modell zu haben.
Ich dachte daran, eine Liste von Nachrichten zu haben, die veröffentlicht werden sollen, wenn eine DB-Transaktion festgeschrieben wird, aber das ist eine wirklich übel riechende Lösung.
Wie gehe ich damit richtig um?