2016-02-10 5 views
1

Я не могу понять, как я могу опубликовать транзакцию сообщений с использованием MassTransit 3.1.2 и RabbitMQ 3.6.0. У меня есть базовый сценарий, в котором я что-то сохраняю в базе данных, а затем хочу опубликовать событие. Обертывание System.Transactions.TransactionScope вокруг него не работает, прежде чем я завершить сферу сообщение уже отправлено:Публикация транзакций MassTransit

using (var scope = new TransactionScope(TransactionScopeOption.Required)) 
{ 
    // Save to database here. 

    bus.Publish(new EntityCreatedEvent()); 

    // Event is already published at this point. 

    scope.Complete(); 
} 

Шина создается следующим образом:

var rabbitMqHostAddress = new Uri($"rabbitmq://{ConfigurationManager.AppSettings["RabbitMqHost"]}/"); 

var bus = Bus.Factory.CreateUsingRabbitMq(r => 
{ 
    r.Host(rabbitMqHostAddress, h => 
    { 
     h.Username(ConfigurationManager.AppSettings["RabbitMqUsername"]); 
     h.Password(ConfigurationManager.AppSettings["RabbitMqPassword"]); 
    }); 
}); 
+0

Вы решили это каким-либо образом? –

+0

К сожалению, нет. – TheGuest

ответ

0

RabbitMQ не зарегистрировалось в сделки. Это невозможно.

+1

Если я проверяю https://www.rabbitmq.com/semantics.html, он говорит, что у него есть транзакционное издание и ack, так что возможно ли это правильно? – TheGuest