스케줄 테스트 임시 커밋
This commit is contained in:
parent
9c400bb0bd
commit
86aa5c663b
|
|
@ -1,18 +1,45 @@
|
||||||
using Server.System;
|
using NLog;
|
||||||
|
using Server.System;
|
||||||
|
|
||||||
namespace Server.Scheduler
|
namespace Server.Scheduler
|
||||||
{
|
{
|
||||||
public class SessionScheduler : System.Scheduler
|
public class SessionScheduler : System.Scheduler
|
||||||
{
|
{
|
||||||
System.Redis redis = new Redis();
|
System.Redis redis;
|
||||||
public SessionScheduler(string cronData) : base(cronData)
|
|
||||||
|
NLog.ILogger logger = LogManager.GetCurrentClassLogger();
|
||||||
|
|
||||||
|
public SessionScheduler(string cronData, Redis redis) : base(cronData)
|
||||||
{
|
{
|
||||||
|
this.redis = redis;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Process()
|
public override void Process()
|
||||||
{
|
{
|
||||||
//모든 유저해쉬를 받아오는 함수가 필요 아니 모든 접속유저를 List형태로 따로 저장해두기.
|
List<LoginUser> users = redis.GetList<LoginUser>("LoginUser");
|
||||||
//redis.GetHash()
|
|
||||||
|
DateTime now = DateTime.Now;
|
||||||
|
|
||||||
|
Console.WriteLine($"SessionScheduler : {now.ToString()}");
|
||||||
|
|
||||||
|
//logger.Debug($"SessionScheduler : {now.ToString()}");
|
||||||
|
|
||||||
|
|
||||||
|
for (int n = users.Count - 1; n >= 0; n--)
|
||||||
|
{
|
||||||
|
if ((now - users[n].moveTime).TotalMinutes >= 1) //1분이상 지난상태
|
||||||
|
{
|
||||||
|
redis.RemoveList(n, users[n], "LoginUser");
|
||||||
|
redis.RemoveKey("UserSession", users[n].UUID);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class LoginUser
|
||||||
|
{
|
||||||
|
public string UUID;
|
||||||
|
public DateTime moveTime;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -240,6 +240,19 @@ namespace Server.System
|
||||||
return db.HashGet(KeySet(keys), field);
|
return db.HashGet(KeySet(keys), field);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void RemoveKey(params string[] keys)
|
||||||
|
{
|
||||||
|
if (local)
|
||||||
|
{
|
||||||
|
stringType.Remove(KeySet(keys));
|
||||||
|
listType.Remove(KeySet(keys));
|
||||||
|
zType.Remove(KeySet(keys));
|
||||||
|
hashType.Remove(KeySet(keys));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
db.KeyDelete(KeySet(keys));
|
||||||
|
}
|
||||||
|
|
||||||
private string KeySet(string[] keys)
|
private string KeySet(string[] keys)
|
||||||
{
|
{
|
||||||
return string.Join(":", keys);
|
return string.Join(":", keys);
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ namespace Server.System
|
||||||
public static readonly string EXCEL_SQL_URL = "Host=192.168.0.2;Port=5432;Username=manager;Password=Zn2zs558W5SdD8K;Database=project_thewar;";
|
public static readonly string EXCEL_SQL_URL = "Host=192.168.0.2;Port=5432;Username=manager;Password=Zn2zs558W5SdD8K;Database=project_thewar;";
|
||||||
public static readonly string remoteUrl = "https://manager:BQNl01bJJF0wn9R@gitea.pandoli365.com/Team.thewar/thewar_excel_live.git";
|
public static readonly string remoteUrl = "https://manager:BQNl01bJJF0wn9R@gitea.pandoli365.com/Team.thewar/thewar_excel_live.git";
|
||||||
#endif
|
#endif
|
||||||
|
public static readonly Redis redis = new Redis("172.16.18.244", 48600);
|
||||||
|
|
||||||
public static readonly string URL = "https://0.0.0.0:4860";
|
public static readonly string URL = "https://0.0.0.0:4860";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,9 +35,10 @@ namespace Server.System
|
||||||
|
|
||||||
public async Task Start()
|
public async Task Start()
|
||||||
{
|
{
|
||||||
|
Console.WriteLine("scheduler: " + schedules.Count);
|
||||||
// 스케줄러 생성
|
// 스케줄러 생성
|
||||||
ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
|
ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
|
||||||
scheduler = await schedulerFactory.GetScheduler();
|
IScheduler scheduler = await schedulerFactory.GetScheduler();
|
||||||
|
|
||||||
// 스케줄러 시작
|
// 스케줄러 시작
|
||||||
await scheduler.Start();
|
await scheduler.Start();
|
||||||
|
|
@ -46,11 +47,11 @@ namespace Server.System
|
||||||
foreach (var schedule in schedules)
|
foreach (var schedule in schedules)
|
||||||
{
|
{
|
||||||
IJobDetail job = JobBuilder.Create<Scheduler>()
|
IJobDetail job = JobBuilder.Create<Scheduler>()
|
||||||
.WithIdentity(schedule.GetType().Name, "group1") // Scheduler 클래스의 이름을 사용하여 고유한 ID 생성
|
.WithIdentity(schedule.GetType().Name, "group" + schedule.GetType().Name) // Scheduler 클래스의 이름을 사용하여 고유한 ID 생성
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
ITrigger trigger = TriggerBuilder.Create()
|
ITrigger trigger = TriggerBuilder.Create()
|
||||||
.WithIdentity(schedule.GetType().Name + "Trigger", "group1")
|
.WithIdentity(schedule.GetType().Name + "Trigger", "group" + schedule.GetType().Name)
|
||||||
.WithCronSchedule(schedule.cron) // 스케줄의 cron 표현식 사용
|
.WithCronSchedule(schedule.cron) // 스케줄의 cron 표현식 사용
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue