4.3 Saga事务协调器
...大约 1 分钟
简介
Saga事务协调器主要是记录事务的执行日志和对失败事务进行重试。
安装依赖包
提前准备:安装并启动Consul、RabbitMQ(可配置不启用)
创建一个Web Api项目或者Work Service项目(生产环境建议使用),选择对应的数据库驱动(参考FreeSql官网),以SqlServer为例,安装
FreeSql.Provider.SqlServer
。示例4.3
(点击查看完整示例代码)
dotnet add package Wing.Saga.Server
dotnet add package Wing.RabbitMQ
dotnet add package Wing.Consul
dotnet add package FreeSql.Provider.SqlServer
Install-Package Wing.Saga.Server
Install-Package Wing.RabbitMQ
Install-Package Wing.Consul
Install-Package FreeSql.Provider.SqlServer
Program代码
Headers
设置请求头(调用事务重试接口时,传递JWT认证Token)
using Wing;
var builder = WebApplication.CreateBuilder(args);
builder.Host.AddWing(builder => builder.AddConsul());
// Add services to the container.
builder.Services.AddControllers();
builder.Services.AddWing()
.AddJwt()
.AddPersistence(FreeSql.DataType.SqlServer)
.AddEventBus()
.AddSaga(new SagaOptions
{
Headers = () =>
{
var token = $"Bearer {App.GetRequiredService<IAuth>().GetToken()}";
return new Dictionary<string, string> { { "Authorization", token } };
}
});
var app = builder.Build();
// Configure the HTTP request pipeline.
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
添加配置
Saga:RetrySeconds
重试失败事务间隔,单位:秒,默认5分钟
Saga:ReportUpdateTime
定时更新报表数据
{
"Saga": {
// 每隔多少秒重试失败事务 默认5分钟
"RetrySeconds": 60,
// 指定时间进行报表数据计算
"ReportUpdateTime": "17:05"
}
}