IISでhttpエンドポイントとしてホストされているWCFサービスがあります。これらのサービスに対するコマンド要求の処理のいくつかの時点で、どのコマンドが処理されたかを示すイベントをNServiceBusに公開したいと考えています。同じトランザクションでデータベースのやりとりを含めることができるように、私が自分のコードで作成し管理するTransactionScope内でこれを行うことは可能ですか?スコープが完成すれば、その出版物が実際に通過するように、その範囲内でバスから出版することができるようにしたいと考えています。私は次のように実行すると:自分のTransactionScopeにNServiceBus Publishを登録できますか?
using (var scope = new TransactionScope()) {
bus.Publish(new SomethingHappened { Description = String.Format("{0} logged in at {1}", user.Name, DateTime.Now.ToLongTimeString()) }).ConfigureAwait(false).GetAwaiter().GetResult();
}
を私は、トランザクション・スコープにscope.Complete()
を呼び出していないにもかかわらず、メッセージが加入者によって受信されたことがわかります。何があれば、出版物がその範囲に登録されるように変更することができますか?
この記事は役に立ちますか?https://docs.particular.net/nservicebus/transports/transactions –
@SeanFarmar私は私の実装についてこのドキュメントを参照しました。私が使用しているバスは、TransactionScope/Distributed Transactionを使用するように構成されています。 – traffichazard
どのような交通機関を使用していますか? (MSMQ、LearningTransport) –