Integración de RabbitMQ con transacciones de base de datos

Imagina la situación:

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();

Ahora un consumidor deEntryUpdatedMessage potencialmente puede obtener este mensajeantes de la transaccióntxn está comprometido y por lo tanto no podrá ver la actualización.

Ahora, sé que RabbitMQ admite transacciones por sí mismo, pero realmente no podemos usarlas porque creamos una nuevaIModel para cada publicación y tener un modelo por hilo es realmente engorroso en nuestro escenario (aplicación web ASP.NET).

Pensé en tener una lista de mensajes que se publicarán cuando se confirme una transacción de base de datos, pero esa es una solución realmente maloliente.

¿Cuál es la forma correcta de manejar esto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta