From cb28a8225fd643acd0b11dbcafd882b9d9454df4 Mon Sep 17 00:00:00 2001
From: wanggang <76527413@qq.com>
Date: Tue, 14 Apr 2020 15:27:50 +0800
Subject: [PATCH] 1.0.0-beta.414.3
Former-commit-id: d73fe4a1c3e6b29bbd0d4968e974b46a6083c859
---
projects/Infrastructure/Infrastructure.csproj | 3 --
projects/Infrastructure/Web/BaseStartup.cs | 15 -------
projects/IoTCenter/IoTCenter.csproj | 2 +-
.../IoTCenter/Services/CacheEventHandler.cs | 39 +++++++++++++++++
projects/IoTCenter/Services/CacheKey.cs | 7 +++
.../Services/CachedSceneTiggerService.cs | 30 +++++++++++++
.../IoTCenter/Services/ISceneTiggerService.cs | 10 +++++
.../Services/IoTCenterEventHandler.cs | 43 ++-----------------
.../IoTCenter/Services/SceneTiggerService.cs | 22 ++++++++++
projects/IoTCenter/Startup.cs | 25 ++---------
projects/IoTNode/IoTNode.csproj | 5 ++-
.../IoTNode/Services/CacheEventHandler.cs | 39 +++++++++++++++++
projects/IoTNode/Services/CacheKey.cs | 7 +++
.../Services/CachedSceneTiggerService.cs | 30 +++++++++++++
.../IoTNode/Services/ISceneTiggerService.cs | 10 +++++
.../IoTNode/Services/IoTNodeEventHandler.cs | 27 ++----------
projects/IoTNode/Services/IoTNodeJob.cs | 1 -
.../IoTNode/Services/SceneTiggerService.cs | 22 ++++++++++
projects/IoTNode/Startup.cs | 40 ++++++++---------
19 files changed, 251 insertions(+), 126 deletions(-)
create mode 100644 projects/IoTCenter/Services/CacheEventHandler.cs
create mode 100644 projects/IoTCenter/Services/CacheKey.cs
create mode 100644 projects/IoTCenter/Services/CachedSceneTiggerService.cs
create mode 100644 projects/IoTCenter/Services/ISceneTiggerService.cs
create mode 100644 projects/IoTCenter/Services/SceneTiggerService.cs
create mode 100644 projects/IoTNode/Services/CacheEventHandler.cs
create mode 100644 projects/IoTNode/Services/CacheKey.cs
create mode 100644 projects/IoTNode/Services/CachedSceneTiggerService.cs
create mode 100644 projects/IoTNode/Services/ISceneTiggerService.cs
create mode 100644 projects/IoTNode/Services/SceneTiggerService.cs
diff --git a/projects/Infrastructure/Infrastructure.csproj b/projects/Infrastructure/Infrastructure.csproj
index 6a6426e7..0ebd6148 100644
--- a/projects/Infrastructure/Infrastructure.csproj
+++ b/projects/Infrastructure/Infrastructure.csproj
@@ -10,7 +10,6 @@
-
@@ -45,8 +44,6 @@
-
-
diff --git a/projects/Infrastructure/Web/BaseStartup.cs b/projects/Infrastructure/Web/BaseStartup.cs
index da4bf2ff..0990f901 100644
--- a/projects/Infrastructure/Web/BaseStartup.cs
+++ b/projects/Infrastructure/Web/BaseStartup.cs
@@ -1,5 +1,3 @@
-using Hangfire;
-using Hangfire.MemoryStorage;
using Infrastructure.Application.Services.Settings;
using Infrastructure.Data;
using Infrastructure.Events;
@@ -212,7 +210,6 @@ namespace Infrastructure.Web
//};
});
}
- this.UseScheduler(services);
services.AddMemoryCache();
services.AddHttpContextAccessor();
@@ -237,11 +234,6 @@ namespace Infrastructure.Web
}
}
- public virtual void UseScheduler(IServiceCollection services)
- {
- services.AddHangfire(x => x.UseMemoryStorage());
- }
-
public virtual void ConfigureOptions(IServiceCollection services)
{
services.ConfigureOptions(new FileConfigureOptions(this.Env));
@@ -363,7 +355,6 @@ namespace Infrastructure.Web
app.UseSession();
this.UseAuthentication(app);
this.UseSwagger(app);
- this.UseScheduler(app);
app.UseEndpoints(endpoints =>
{
this.UseSignalR(endpoints);
@@ -420,12 +411,6 @@ namespace Infrastructure.Web
});
}
- public virtual void UseScheduler(IApplicationBuilder app)
- {
- app.UseHangfireDashboard(pathMatch: "/job");
- app.UseHangfireServer();
- }
-
public virtual void UseSignalR(IEndpointRouteBuilder endpoints)
{
this.UseSignalR(endpoints);
diff --git a/projects/IoTCenter/IoTCenter.csproj b/projects/IoTCenter/IoTCenter.csproj
index a0e6871d..6bba8388 100644
--- a/projects/IoTCenter/IoTCenter.csproj
+++ b/projects/IoTCenter/IoTCenter.csproj
@@ -2,7 +2,7 @@
netcoreapp3.1
true
- 1.0.0-beta.414.1
+ 1.0.0-beta.414.2
diff --git a/projects/IoTCenter/Services/CacheEventHandler.cs b/projects/IoTCenter/Services/CacheEventHandler.cs
new file mode 100644
index 00000000..b95d3502
--- /dev/null
+++ b/projects/IoTCenter/Services/CacheEventHandler.cs
@@ -0,0 +1,39 @@
+using Application.Domain.Entities;
+using Infrastructure.Events;
+using Microsoft.Extensions.Caching.Distributed;
+
+namespace IoTCenter.Services
+{
+ public class CacheEventHandler :
+ IEventHander>,
+ IEventHander>,
+ IEventHander>
+ {
+ private readonly IDistributedCache _cache;
+
+ public CacheEventHandler(IDistributedCache cache)
+ {
+ this._cache = cache;
+ }
+
+ public void Handle(EntityInsertedEvent message)
+ {
+ this.Remove();
+ }
+
+ public void Handle(EntityUpdatedEvent message)
+ {
+ this.Remove();
+ }
+
+ public void Handle(EntityDeletedEvent message)
+ {
+ this.Remove();
+ }
+
+ private void Remove()
+ {
+ this._cache.Remove(CacheKey.SceneTiggerKey);
+ }
+ }
+}
\ No newline at end of file
diff --git a/projects/IoTCenter/Services/CacheKey.cs b/projects/IoTCenter/Services/CacheKey.cs
new file mode 100644
index 00000000..48672e92
--- /dev/null
+++ b/projects/IoTCenter/Services/CacheKey.cs
@@ -0,0 +1,7 @@
+namespace IoTCenter.Services
+{
+ public class CacheKey
+ {
+ public static string SceneTiggerKey => nameof(SceneTiggerKey);
+ }
+}
\ No newline at end of file
diff --git a/projects/IoTCenter/Services/CachedSceneTiggerService.cs b/projects/IoTCenter/Services/CachedSceneTiggerService.cs
new file mode 100644
index 00000000..809c34cd
--- /dev/null
+++ b/projects/IoTCenter/Services/CachedSceneTiggerService.cs
@@ -0,0 +1,30 @@
+using Application.Domain.Entities;
+using Infrastructure.Extensions;
+using Microsoft.Extensions.Caching.Distributed;
+using System.Collections.Generic;
+
+namespace IoTCenter.Services
+{
+ public class CachedSceneTiggerService : ISceneTiggerService
+ {
+ private readonly IDistributedCache _cache;
+ private readonly SceneTiggerService _sceneTiggerService;
+
+ public CachedSceneTiggerService(IDistributedCache cache, SceneTiggerService sceneTiggerService)
+ {
+ this._cache = cache;
+ this._sceneTiggerService = sceneTiggerService;
+ }
+
+ public IList GetSceneTiggers()
+ {
+ var sceneTiggers = this._cache.Get>(CacheKey.SceneTiggerKey);
+ if (sceneTiggers == null)
+ {
+ sceneTiggers = this._sceneTiggerService.GetSceneTiggers();
+ _cache.Set(CacheKey.SceneTiggerKey, sceneTiggers);
+ }
+ return sceneTiggers;
+ }
+ }
+}
\ No newline at end of file
diff --git a/projects/IoTCenter/Services/ISceneTiggerService.cs b/projects/IoTCenter/Services/ISceneTiggerService.cs
new file mode 100644
index 00000000..b44b041d
--- /dev/null
+++ b/projects/IoTCenter/Services/ISceneTiggerService.cs
@@ -0,0 +1,10 @@
+using Application.Domain.Entities;
+using System.Collections.Generic;
+
+namespace IoTCenter.Services
+{
+ public interface ISceneTiggerService
+ {
+ IList GetSceneTiggers();
+ }
+}
\ No newline at end of file
diff --git a/projects/IoTCenter/Services/IoTCenterEventHandler.cs b/projects/IoTCenter/Services/IoTCenterEventHandler.cs
index f6cecbec..7679e169 100644
--- a/projects/IoTCenter/Services/IoTCenterEventHandler.cs
+++ b/projects/IoTCenter/Services/IoTCenterEventHandler.cs
@@ -25,9 +25,6 @@ namespace IoTCenter.Services
IEventHander>,
IEventHander>,
IEventHander>,
- IEventHander>,
- IEventHander>,
- IEventHander>,
IEventHander>,
IEventHander>,
IEventHander>,
@@ -47,12 +44,12 @@ namespace IoTCenter.Services
IEventHander>,
IEventHander>
{
- public static ConcurrentDictionary Tiggers = new ConcurrentDictionary();
private readonly IConfiguration _cfg;
private readonly ILogger _logger;
private readonly IRepository _sceneRepo;
private readonly IRepository _deviceRepo;
private readonly IRepository _sceneTiggerRepo;
+ private readonly ISceneTiggerService _sceneTiggerService;
private readonly IHubContext _hub;
private readonly IHttpClientFactory _httpClientFactory;
@@ -61,6 +58,7 @@ namespace IoTCenter.Services
IRepository sceneRepo,
IRepository deviceRepo,
IRepository sceneTiggerRepo,
+ ISceneTiggerService sceneTiggerService,
IHubContext hub,
IHttpClientFactory httpClientFactory)
{
@@ -69,6 +67,7 @@ namespace IoTCenter.Services
this._sceneRepo = sceneRepo;
this._deviceRepo = deviceRepo;
this._sceneTiggerRepo = sceneTiggerRepo;
+ this._sceneTiggerService = sceneTiggerService;
this._hub = hub;
this._httpClientFactory = httpClientFactory;
}
@@ -119,39 +118,6 @@ namespace IoTCenter.Services
#endregion timer
- #region tigger
-
- public void Handle(EntityInsertedEvent message)
- {
- var tigger = message.Data;
- if (_sceneRepo.ReadOnlyTable().Any(o => o.Id == tigger.SceneId && o.NodeId == null))
- {
- Tiggers.TryRemove(message.Data.Id, out _);
- Tiggers.TryAdd(tigger.Id, tigger);
- }
- }
-
- public void Handle(EntityUpdatedEvent message)
- {
- var tigger = message.Data;
- if (_sceneRepo.ReadOnlyTable().Any(o => o.Id == tigger.SceneId && o.NodeId == null))
- {
- Tiggers.TryRemove(message.Data.Id, out _);
- Tiggers.TryAdd(tigger.Id, tigger);
- }
- }
-
- public void Handle(EntityDeletedEvent message)
- {
- var tigger = message.Data;
- if (_sceneRepo.ReadOnlyTable().Any(o => o.Id == tigger.SceneId && o.NodeId == null))
- {
- Tiggers.TryRemove(tigger.Id, out _);
- }
- }
-
- #endregion tigger
-
#region Product
public void Handle(EntityInsertedEvent message)
@@ -292,10 +258,9 @@ namespace IoTCenter.Services
{
try
{
- foreach (var item in Tiggers)
+ foreach (var tigger in this._sceneTiggerService.GetSceneTiggers())
{
var data = message.Data;
- var tigger = item.Value;
if (tigger.DataId == data.Id)
{
var methodText = $"bool Valid(string name,string key,{data.Type.ToString().ToLower()} value,string description){{ return {tigger.Condition};}}";
diff --git a/projects/IoTCenter/Services/SceneTiggerService.cs b/projects/IoTCenter/Services/SceneTiggerService.cs
new file mode 100644
index 00000000..46aac1d5
--- /dev/null
+++ b/projects/IoTCenter/Services/SceneTiggerService.cs
@@ -0,0 +1,22 @@
+using Application.Domain.Entities;
+using Infrastructure.Data;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace IoTCenter.Services
+{
+ public class SceneTiggerService : ISceneTiggerService
+ {
+ private readonly IRepository _sceneTiggerRepo;
+
+ public SceneTiggerService(IRepository sceneTiggerRepo)
+ {
+ this._sceneTiggerRepo = sceneTiggerRepo;
+ }
+
+ public IList GetSceneTiggers()
+ {
+ return this._sceneTiggerRepo.ReadOnlyTable().Where(o => o.Scene.NodeId == null && !o.Disabled).ToList();
+ }
+ }
+}
\ No newline at end of file
diff --git a/projects/IoTCenter/Startup.cs b/projects/IoTCenter/Startup.cs
index 706d936e..35d00505 100644
--- a/projects/IoTCenter/Startup.cs
+++ b/projects/IoTCenter/Startup.cs
@@ -1,20 +1,15 @@
-using Application.Domain.Entities;
-using Infrastructure.Data;
+using Infrastructure.Data;
using Infrastructure.Email;
using Infrastructure.Sms;
using Infrastructure.UI;
using Infrastructure.Web;
using IoT.Shared.Services;
using IoTCenter.Services;
-using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Routing;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.Logging;
using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
namespace IoTCenter
{
@@ -26,6 +21,8 @@ namespace IoTCenter
public override void ConfigureServices(IServiceCollection services)
{
+ services.AddTransient();
+ services.AddTransient();
services.AddTransient();
services.AddTransient();
services.AddTransient();
@@ -34,22 +31,6 @@ namespace IoTCenter
base.ConfigureServices(services);
}
- public override void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
- {
- base.Configure(app, env, loggerFactory);
- //
- Task.Run(() =>
- {
- using var scope = app.ApplicationServices.CreateScope();
- var tiggerRepo = scope.ServiceProvider.GetService>();
- var tiggers = tiggerRepo.ReadOnlyTable().Where(o => o.Scene.NodeId == null).ToList();
- foreach (var tigger in tiggers)
- {
- IoTCenterEventHandler.Tiggers.TryAdd(tigger.Id, tigger);
- }
- });
- }
-
public override void ConfigureOptions(IServiceCollection services)
{
services.ConfigureOptions(new FileConfigureOptions(Env, new List { "IoT.Shared" }));
diff --git a/projects/IoTNode/IoTNode.csproj b/projects/IoTNode/IoTNode.csproj
index 884674e5..3b885e21 100644
--- a/projects/IoTNode/IoTNode.csproj
+++ b/projects/IoTNode/IoTNode.csproj
@@ -2,9 +2,12 @@
netcoreapp3.1
true
- 1.0.0-beta.414
+ 1.0.0-beta.414.3
+
+
+
diff --git a/projects/IoTNode/Services/CacheEventHandler.cs b/projects/IoTNode/Services/CacheEventHandler.cs
new file mode 100644
index 00000000..4e03b887
--- /dev/null
+++ b/projects/IoTNode/Services/CacheEventHandler.cs
@@ -0,0 +1,39 @@
+using Application.Domain.Entities;
+using Infrastructure.Events;
+using Microsoft.Extensions.Caching.Distributed;
+
+namespace IoTNode.Services
+{
+ public class CacheEventHandler :
+ IEventHander>,
+ IEventHander>,
+ IEventHander>
+ {
+ private readonly IDistributedCache _cache;
+
+ public CacheEventHandler(IDistributedCache cache)
+ {
+ this._cache = cache;
+ }
+
+ public void Handle(EntityInsertedEvent message)
+ {
+ this.Remove();
+ }
+
+ public void Handle(EntityUpdatedEvent message)
+ {
+ this.Remove();
+ }
+
+ public void Handle(EntityDeletedEvent message)
+ {
+ this.Remove();
+ }
+
+ private void Remove()
+ {
+ this._cache.Remove(CacheKey.SceneTiggerKey);
+ }
+ }
+}
\ No newline at end of file
diff --git a/projects/IoTNode/Services/CacheKey.cs b/projects/IoTNode/Services/CacheKey.cs
new file mode 100644
index 00000000..2ff8f325
--- /dev/null
+++ b/projects/IoTNode/Services/CacheKey.cs
@@ -0,0 +1,7 @@
+namespace IoTNode.Services
+{
+ public class CacheKey
+ {
+ public static string SceneTiggerKey => nameof(SceneTiggerKey);
+ }
+}
\ No newline at end of file
diff --git a/projects/IoTNode/Services/CachedSceneTiggerService.cs b/projects/IoTNode/Services/CachedSceneTiggerService.cs
new file mode 100644
index 00000000..9d8a98f8
--- /dev/null
+++ b/projects/IoTNode/Services/CachedSceneTiggerService.cs
@@ -0,0 +1,30 @@
+using Application.Domain.Entities;
+using Infrastructure.Extensions;
+using Microsoft.Extensions.Caching.Distributed;
+using System.Collections.Generic;
+
+namespace IoTNode.Services
+{
+ public class CachedSceneTiggerService : ISceneTiggerService
+ {
+ private readonly IDistributedCache _cache;
+ private readonly SceneTiggerService _sceneTiggerService;
+
+ public CachedSceneTiggerService(IDistributedCache cache, SceneTiggerService sceneTiggerService)
+ {
+ this._cache = cache;
+ this._sceneTiggerService = sceneTiggerService;
+ }
+
+ public IList GetSceneTiggers()
+ {
+ var sceneTiggers = this._cache.Get>(CacheKey.SceneTiggerKey);
+ if (sceneTiggers == null)
+ {
+ sceneTiggers = this._sceneTiggerService.GetSceneTiggers();
+ _cache.Set(CacheKey.SceneTiggerKey, sceneTiggers);
+ }
+ return sceneTiggers;
+ }
+ }
+}
\ No newline at end of file
diff --git a/projects/IoTNode/Services/ISceneTiggerService.cs b/projects/IoTNode/Services/ISceneTiggerService.cs
new file mode 100644
index 00000000..d5e43e5c
--- /dev/null
+++ b/projects/IoTNode/Services/ISceneTiggerService.cs
@@ -0,0 +1,10 @@
+using Application.Domain.Entities;
+using System.Collections.Generic;
+
+namespace IoTNode.Services
+{
+ public interface ISceneTiggerService
+ {
+ IList GetSceneTiggers();
+ }
+}
\ No newline at end of file
diff --git a/projects/IoTNode/Services/IoTNodeEventHandler.cs b/projects/IoTNode/Services/IoTNodeEventHandler.cs
index 8c878301..0f78aca0 100644
--- a/projects/IoTNode/Services/IoTNodeEventHandler.cs
+++ b/projects/IoTNode/Services/IoTNodeEventHandler.cs
@@ -12,16 +12,14 @@ namespace IoTNode.Services
IEventHander>,
IEventHander>,
IEventHander>,
- IEventHander>,
- IEventHander>,
- IEventHander>,
IEventHander>
{
- public static ConcurrentDictionary Tiggers = new ConcurrentDictionary();
+ private readonly ISceneTiggerService _sceneTiggerService;
private readonly IoTNodeJob _job;
- public IoTNodeEventHandler(IoTNodeJob job)
+ public IoTNodeEventHandler(ISceneTiggerService sceneTiggerService, IoTNodeJob job)
{
+ this._sceneTiggerService = sceneTiggerService;
this._job = job;
}
@@ -40,28 +38,11 @@ namespace IoTNode.Services
RecurringJob.RemoveIfExists(message.Data.Id.ToString());
}
- public void Handle(EntityInsertedEvent message)
- {
- Tiggers.TryAdd(message.Data.Id, message.Data);
- }
-
- public void Handle(EntityUpdatedEvent message)
- {
- Tiggers.TryRemove(message.Data.Id, out _);
- Tiggers.TryAdd(message.Data.Id, message.Data);
- }
-
- public void Handle(EntityDeletedEvent message)
- {
- Tiggers.TryRemove(message.Data.Id, out _);
- }
-
public void Handle(EntityUpdatedEvent message)
{
var data = message.Data;
- foreach (var item in Tiggers)
+ foreach (var tigger in this._sceneTiggerService.GetSceneTiggers())
{
- var tigger = item.Value;
if (tigger.DataId == data.Id)
{
var methodText = $"bool Valid(string name,string key,{data.Type.ToString().ToLower()} value,string description){{ return {tigger.Condition};}}";
diff --git a/projects/IoTNode/Services/IoTNodeJob.cs b/projects/IoTNode/Services/IoTNodeJob.cs
index 42b95f10..3eb32e83 100644
--- a/projects/IoTNode/Services/IoTNodeJob.cs
+++ b/projects/IoTNode/Services/IoTNodeJob.cs
@@ -4,7 +4,6 @@ using IoT.Shared.Services;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using System;
-using System.Diagnostics;
using System.Linq;
namespace IoTNode.Services
diff --git a/projects/IoTNode/Services/SceneTiggerService.cs b/projects/IoTNode/Services/SceneTiggerService.cs
new file mode 100644
index 00000000..74e29533
--- /dev/null
+++ b/projects/IoTNode/Services/SceneTiggerService.cs
@@ -0,0 +1,22 @@
+using Application.Domain.Entities;
+using Infrastructure.Data;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace IoTNode.Services
+{
+ public class SceneTiggerService : ISceneTiggerService
+ {
+ private readonly IRepository _sceneTiggerRepo;
+
+ public SceneTiggerService(IRepository sceneTiggerRepo)
+ {
+ this._sceneTiggerRepo = sceneTiggerRepo;
+ }
+
+ public IList GetSceneTiggers()
+ {
+ return this._sceneTiggerRepo.ReadOnlyTable().Where(o => !o.Disabled).ToList();
+ }
+ }
+}
\ No newline at end of file
diff --git a/projects/IoTNode/Startup.cs b/projects/IoTNode/Startup.cs
index 30b16ec7..8e93b9d3 100644
--- a/projects/IoTNode/Startup.cs
+++ b/projects/IoTNode/Startup.cs
@@ -1,5 +1,5 @@
-using Application.Domain.Entities;
-using Hangfire;
+using Hangfire;
+using Hangfire.LiteDB;
using Infrastructure.Data;
using Infrastructure.Email;
using Infrastructure.Web;
@@ -13,9 +13,6 @@ using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
-using System;
-using System.Linq;
-using System.Threading.Tasks;
namespace IoTNode
{
@@ -27,6 +24,9 @@ namespace IoTNode
public override void ConfigureServices(IServiceCollection services)
{
+ services.AddHangfire(o => o.UseLiteDbStorage("job.db"));
+ services.AddTransient();
+ services.AddTransient();
services.AddTransient();
services.AddTransient();
services.AddTransient();
@@ -47,22 +47,20 @@ namespace IoTNode
public override void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
base.Configure(app, env, loggerFactory);
- Task.Run(() =>
- {
- using var scope = app.ApplicationServices.CreateScope();
- var timerRepo = scope.ServiceProvider.GetService>();
- var timers = timerRepo.ReadOnlyTable().Where(o => o.Scene.NodeId != null).ToList();
- foreach (var timer in timers)
- {
- RecurringJob.AddOrUpdate(timer.Id.ToString(), o => o.TimerHanle(timer.Id), timer.Cron, TimeZoneInfo.Local);
- }
- var tiggerRepo = scope.ServiceProvider.GetService>();
- var tiggers = tiggerRepo.ReadOnlyTable().Where(o => o.Scene.NodeId != null).ToList();
- foreach (var tigger in tiggers)
- {
- IoTNodeEventHandler.Tiggers.TryAdd(tigger.Id, tigger);
- }
- });
+ app.UseHangfireDashboard(pathMatch: "/job");
+
+ app.UseHangfireServer();
+
+ //Task.Run(() =>
+ //{
+ // using var scope = app.ApplicationServices.CreateScope();
+ // var timerRepo = scope.ServiceProvider.GetService>();
+ // var timers = timerRepo.ReadOnlyTable().Where(o => o.Scene.NodeId != null).ToList();
+ // foreach (var timer in timers)
+ // {
+ // RecurringJob.AddOrUpdate(timer.Id.ToString(), o => o.TimerHanle(timer.Id), timer.Cron, TimeZoneInfo.Local);
+ // }
+ //});
}
}
}
\ No newline at end of file