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?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage