ASP.NET CoreでCAPの取引詳細を自動で有効にする
この記事の目的は、CAPトランザクションを有効にする方法を説明することです。 {ASP.NET Core ASP.NET Core なぜなら、私たちの例では、カプセル化せずに、より直感的な方法を直接示しており、初心者の学生の中には、カプセル化の方法がわからず、どうすればいいのかと私を見つけてくる人もいるからです。
この例では
Entity Framework
もし、これと似たような他のOrmの原理を使っているのであれば、それを参考にすることができます。
I. パブリッシュサイドトランザクション
にあるものがほとんどなので
Web
が使われています。
ASP.NET Core
フィルタを使っても、もちろんミドルウェアを通しても、原理は同じです。
1. を作成します。
TypeFilter
という名前の
CapTransactionFilterAttribute
public class CapTransactionFilterAttribute : TypeFilterAttribute
{
public CapTransactionFilterAttribute() : base(typeof(TransactionActionFilter))
{
}
public class TransactionActionFilter : IActionFilter
{
private IDbContextTransaction _transaction;
public void OnActionExecuting(ActionExecutingContext context)
{
var dbContext = context.HttpContext.RequestServices.GetRequiredService<AppDbContext>();
var capPublisher = context.HttpContext.RequestServices.GetService<ICapPublisher>();
_transaction = dbContext.Database.BeginTransaction(capPublisher);
}
public void OnActionExecuted(ActionExecutedContext context)
{
if (context.Exception == null)
{
_transaction.Commit();
}
else
{
_transaction.Rollback();
}
_transaction?.Dispose();
}
}
}
Action
2. 方法の使用は、トランザクション制御の必要性で
TypeFilter(typeof(CapTransactionFilterAttribute
を追加します。
[Route("~/ef/trans-filter")]
[TypeFilter(typeof(CapTransactionFilterAttribute))]
public IActionResult EntityFrameworkWithTransactionFilter(
[FromServices] AppDbContext dbContext)
{
dbContext.Persons.Add(new Person() { Name = "ef.transaction" });
_capBus.Publish("sample.rabbitmq.mysql", DateTime.Now);
dbContext.SaveChanges();
return Ok();
}
))]で有効になります。
CAP
第二に、消費者側トランザクション
消費者側の自動取引では、主に
CAP
それを可能にするために用意されたフィルターには
public class MyCapFilter : SubscribeFilter
private
private readonly AppDbContext _dbContext;
private IDbContextTransaction _transaction;
public MyCapFilter(AppDbContext dbContext)
{
_dbContext = dbContext;
}
public override void OnSubscribeExecuting(ExecutingContext context)
{
_transaction = _dbContext.Database.BeginTransaction();
}
public override void OnSubscribeExecuted(ExecutedContext context)
{
_transaction.Commit();
}
public override void OnSubscribeException(DotNetCore.CAP.Filter.ExceptionContext context)
{
_transaction.Rollback();
}
}
のバージョンが5.1.0以上であることを確認します。
1. CAPフィルタの作成
services.AddCap(opt =>
{
// ***
}.AddSubscribeFilter<MyCapFilter>();
2. フィルタを設定する
ASP.NET Core
上記はコンシューマー側の簡単な例です。
この時点でこの記事で
CAP
を自動的に有効にする
ASP.NET Core
トランザクションの詳細に関する記事は以上ですが、さらに詳しく
の詳細はこちら
ASP.NET Core
Code ASP.NET Core /code}でCAPトランザクションを自動的に有効にする方法については、Scripting Houseの過去記事を検索するか、以下の関連記事を引き続きご覧ください。
関連
-
.NET 6:.NETのロギングコンポーネントlog4netを使用する。
-
ASP.NET CoreでURLを設定する5つの方法
-
認証プロセスの記録にjwtを使用したネット
-
再起動を伴わないNET5の設定変更は自動的に反映される
-
NET 6 の今後の新機能 暗黙の名前空間参照
-
.NET 6における暗黙の名前空間参照
-
ネットパフォーマンスチューニング - ArrayPool 詳細
-
ASP.NET Coreで複数のサービス実装クラスをインジェクトする方法
-
ajaxでポップアップアラートボックス
-
CS0234 名前空間 'Microsoft.AspNet' に型または名前空間名 'Mvc' が存在しない (あなたは
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
pythonでpillowをインストールする3つの方法
-
NET6新機能 - 暗黙の名前空間参照
-
.NET Coreでオブジェクトプールを使用する
-
30分でわかるコング経由の.NETゲートウェイ
-
net core downlink tracking skywalking インストールと使いやすいチュートリアル
-
ネットのメモリ管理に関する5つの基本
-
ASP.NET Core ディペンデンシーインジェクションの詳細
-
ASP.NETでWeb.configからログインする際の正しいアカウントパスワードを確認する
-
ASP.NET Core MVC フィルタ
-
名前 'xxx' が現在のコンテキストに存在しない エラー解決方法の1つ