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)
{
_ = RunJumpSyncLoopAsync(stoppingToken);
await _client.ConnectAsync(new MqttClientOptionsBuilder()
.WithTcpServer(AppSettings.Mqtt.Host, AppSettings.Mqtt.Port)
.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)

View File

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

View File

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

View File

@ -28,6 +28,8 @@
"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;",
"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()
{
var csredis = new CSRedisClient("8.153.108.90,Password=yd708090,SyncTimeout=15000,defaultDatabase=5");
RedisHelper.Initialization(csredis);
//var csredis = new CSRedisClient("8.153.108.90,Password=yd708090,SyncTimeout=15000,defaultDatabase=5");
//RedisHelper.Initialization(csredis);
}
/// <summary>
/// 验证缓存项是否存在