我试图发送一条简单的消息,但似乎它会自动被标记为没有事务范围(behavior)。 端点正在运行SQL传输(3.0.1)和NSB 6.1.2,SQL传输以默认事务模式(TransactionScope)运行。
据我所知,没有采取任何具体行动,我唯一能想到的是连接字符串与Dapper共享,Dapper也对数据库执行了几个等待的查询。 / p>
var data = await Provider.GetSomeRandomData(message.DataId);
bool synced = false;
await context.Reply(new RandomMessage());
如果使用TransportTransactionMode.SendsAtomicWithReceive
配置端点,则不记录任何内容,启用TransportTransactionMode.TransactionScope
时,会发生日志记录(当然也可能会丢失实际效果)。
理想情况下,提供程序将使用(某种方式)NServiceBus使用的相同事务,但是为了查询数据,它需要以某种方式突破此事务上下文,在不破坏NServiceBus事务的情况下查询数据库(如果这是实际上是问题),所以写入仍然会被处理。
答案 0 :(得分:0)
您可以尝试添加.ConfigureAwait(false)
await context.Reply(new RandomMessage())
.ConfigureAwait(false);
请参阅this article for more details
这可以解决问题吗?