This commit is contained in:
tanglong 2025-07-16 13:29:04 +08:00
parent 3836930a63
commit c9c3a65bfb
5 changed files with 41 additions and 4 deletions

View File

@ -80,6 +80,8 @@ namespace YD_AllHeartRates.Api.Mqtt
protected override async Task ExecuteAsync(CancellationToken stoppingToken) protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{ {
_ = RunJumpSyncLoopAsync(stoppingToken);
await _client.ConnectAsync(new MqttClientOptionsBuilder() await _client.ConnectAsync(new MqttClientOptionsBuilder()
.WithTcpServer(AppSettings.Mqtt.Host, AppSettings.Mqtt.Port) .WithTcpServer(AppSettings.Mqtt.Host, AppSettings.Mqtt.Port)
.Build(), stoppingToken); .Build(), stoppingToken);
@ -291,6 +293,33 @@ namespace YD_AllHeartRates.Api.Mqtt
}); });
} }
} }
private async Task RunJumpSyncLoopAsync(CancellationToken token)
{
while (!token.IsCancellationRequested)
{
try
{
await SyncTodayJumpDataToDbAsync();
}
catch (Exception ex)
{
_log.LogError(ex, "跳绳数据同步异常");
}
try
{
await Task.Delay(TimeSpan.FromSeconds(10), token);
}
catch (TaskCanceledException)
{
// 如果是取消任务导致 delay 中断,直接退出
break;
}
}
_log.LogInformation("跳绳数据同步任务已退出");
}
private byte[]? ParseHexData(string hex) private byte[]? ParseHexData(string hex)

View File

@ -28,6 +28,7 @@ using YD_AllHeartRates.Api.Mqtt;
using YD_AllHeartRates.Commons.MemoryCaches; using YD_AllHeartRates.Commons.MemoryCaches;
using YD_AllHeartRates.Api.Middlewares; using YD_AllHeartRates.Api.Middlewares;
using YD_AllHeartRates.Api.WebSocket; using YD_AllHeartRates.Api.WebSocket;
using CSRedis;
namespace YD_AllHeartRates.Api namespace YD_AllHeartRates.Api
{ {
@ -74,6 +75,11 @@ namespace YD_AllHeartRates.Api
services.AddSingleton(mqttCfg); services.AddSingleton(mqttCfg);
services.AddSingleton(new MqttFactory().CreateMqttClient()); services.AddSingleton(new MqttFactory().CreateMqttClient());
//Redis
var csredis = new CSRedisClient(AppSettings.RedisConnectionString);
RedisHelper.Initialization(csredis);
services.AddSingleton<ICaching, RedisCacheService>();
// ③ 后台批量写库服务 // ③ 后台批量写库服务
services.AddHostedService<MqttBackgroundService>(); services.AddHostedService<MqttBackgroundService>();
@ -83,8 +89,6 @@ namespace YD_AllHeartRates.Api
services.AddScoped<IHeartRateReportService, HeartRateReportService>(); services.AddScoped<IHeartRateReportService, HeartRateReportService>();
services.AddScoped<IDeviceService, DeviceService>(); services.AddScoped<IDeviceService, DeviceService>();
services.AddScoped<IUserService, UserService>(); services.AddScoped<IUserService, UserService>();
services.AddScoped<ICaching, RedisCacheService>();
services.AddScoped<LoginContext>(); services.AddScoped<LoginContext>();
services.AddSession(); services.AddSession();
services.AddMemoryCache(); services.AddMemoryCache();

View File

@ -10,6 +10,7 @@
public static string DbConnectionString { get; set; } public static string DbConnectionString { get; set; }
public static string SmartSportsString { get; set; } public static string SmartSportsString { get; set; }
public static string RedisConnectionString { get; set; }
public static string[] CorsUrls { get; set; } public static string[] CorsUrls { get; set; }
public static MqttConfig Mqtt { get; set; } public static MqttConfig Mqtt { get; set; }
@ -22,6 +23,7 @@
FlushTime = configuration["FlushTime"]; FlushTime = configuration["FlushTime"];
DbConnectionString = configuration["DbConnectionString"]; DbConnectionString = configuration["DbConnectionString"];
SmartSportsString = configuration["SmartSportsString"]; SmartSportsString = configuration["SmartSportsString"];
RedisConnectionString = configuration["RedisConnectionString"];
CorsUrls = configuration["CorsUrls"].Split(','); CorsUrls = configuration["CorsUrls"].Split(',');
Mqtt = configuration.GetSection("Mqtt").Get<MqttConfig>(); Mqtt = configuration.GetSection("Mqtt").Get<MqttConfig>();
} }

View File

@ -28,6 +28,8 @@
"AppUrls": { "AppUrls": {
}, },
"RedisConnectionString": "8.153.108.90,Password=yd708090,SyncTimeout=15000,defaultDatabase=5",
"DbConnectionString": " Data Source=rm-uf64b8oxdt19pfyxfao.sqlserver.rds.aliyuncs.com;Database=AllHeartRatesDB_QA;User ID=qa;Password=Admin@123;Connect Timeout=500;", "DbConnectionString": " Data Source=rm-uf64b8oxdt19pfyxfao.sqlserver.rds.aliyuncs.com;Database=AllHeartRatesDB_QA;User ID=qa;Password=Admin@123;Connect Timeout=500;",
"SmartSportsString": " Data Source=rm-uf64b8oxdt19pfyxfao.sqlserver.rds.aliyuncs.com;Database=SmartSportsServerDB_QA;User ID=qa;Password=Admin@123;Connect Timeout=500;", "SmartSportsString": " Data Source=rm-uf64b8oxdt19pfyxfao.sqlserver.rds.aliyuncs.com;Database=SmartSportsServerDB_QA;User ID=qa;Password=Admin@123;Connect Timeout=500;",

View File

@ -15,8 +15,8 @@ namespace YD_AllHeartRates.Commons.MemoryCaches
{ {
public RedisCacheService() public RedisCacheService()
{ {
var csredis = new CSRedisClient("8.153.108.90,Password=yd708090,SyncTimeout=15000,defaultDatabase=5"); //var csredis = new CSRedisClient("8.153.108.90,Password=yd708090,SyncTimeout=15000,defaultDatabase=5");
RedisHelper.Initialization(csredis); //RedisHelper.Initialization(csredis);
} }
/// <summary> /// <summary>
/// 验证缓存项是否存在 /// 验证缓存项是否存在