using Coravel.Invocable;
using FreeRedis;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Threading.Tasks;
using VideoAnalysisCore.Common;
namespace VideoAnalysisCore.Job
{
///
/// 设备心跳上报任务
///
public class DeviceHeartbeatJob : IInvocable
{
public Task Invoke()
{
try
{
var redis = AppCommon.Services.GetService();
if (redis == null) return Task.CompletedTask;
var deviceId = AppCommon.Config.ID.ToString();
// 1. 发送心跳 (设置一个带过期时间的Key)
// 只有当程序正常运行时,这个Key才会不断被续期
// 过期时间设为 60秒,Job每30秒执行一次
redis.Set(RedisExpandKey.DeviceHeartbeat(deviceId), DateTime.Now.ToString(), 60);
}
catch (Exception ex)
{
Console.WriteLine($"心跳任务异常: {ex.Message}");
}
return Task.CompletedTask;
}
}
}