die Situation vor:Integration RabbitMQ mit Datenbank-Transaktionen
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();
nun ein Verbraucher von EntryUpdatedMessage
kann möglicherweise diese Meldung vor die Transaktion txn
verpflichtet ist und daher nicht in der Lage sein, um das Update zu sehen. Jetzt weiß ich, dass RabbitMQ Transaktionen selbst unterstützt, aber wir können sie nicht wirklich verwenden, weil wir für jedes Publish ein neues IModel
erstellen und ein per-thread-Modell in unserem Szenario wirklich umständlich ist (ASP.NET-Webanwendung)).
Ich dachte an eine Liste von Nachrichten, die veröffentlicht werden sollen, wenn eine DB-Transaktion festgeschrieben wird, aber das ist eine wirklich übel riechende Lösung.
Wie ist der richtige Umgang damit?