HostedProtalServer.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. using EVCB_OCPP.Domain.Extensions;
  2. using EVCB_OCPP.Service;
  3. using EVCB_OCPP.WSServer.Helper;
  4. using EVCB_OCPP.WSServer.Jobs;
  5. using EVCB_OCPP.WSServer.Message;
  6. using EVCB_OCPP.WSServer.Service;
  7. using EVCB_OCPP.WSServer.Service.WsService;
  8. using Microsoft.Extensions.Configuration;
  9. using Microsoft.Extensions.DependencyInjection;
  10. using Quartz;
  11. namespace EVCB_OCPP.WSServer
  12. {
  13. public static class HostedProtalServer
  14. {
  15. public static void AddProtalServer(this IServiceCollection services, IConfiguration configuration)
  16. {
  17. services.AddMemoryCache();
  18. //services.AddSingleton<IMemoryCache, DummyMemoryCache>();
  19. services.AddPortalServerDatabase(configuration);
  20. services.AddBusinessServiceFactory();
  21. services.AddHeaderRecordService();
  22. services.AddOcppWsServer();
  23. services.AddSingleton<ServerMessageService>();
  24. services.AddSingleton<LoadingBalanceService>();
  25. services.AddSingleton<MeterValueDbService>();
  26. services.AddSingleton<WebDbService>();
  27. services.AddSingleton<IMainDbService, MainDbService>();
  28. services.AddSingleton<IConnectionLogdbService, ConnectionLogdbService>();
  29. services.AddTransient<ProfileHandler>();
  30. services.AddSingleton<ProtalServer>();
  31. services.AddHostedService<ProtalServer>(p => p.GetRequiredService<ProtalServer>());
  32. services.AddProtalServerJob();
  33. }
  34. internal static void AddPortalServerDatabase(this IServiceCollection services, IConfiguration configuration)
  35. {
  36. services
  37. .AddMainDbContext(configuration)
  38. .AddMeterValueDbContext(configuration)
  39. .AddConnectionLogDbContext(configuration)
  40. .AddWebDBConetext(configuration);
  41. }
  42. public static void AddProtalServerJob(this IServiceCollection services)
  43. {
  44. services.AddQuartz(q => {
  45. q.UseMicrosoftDependencyInjectionJobFactory();
  46. q.ScheduleJob<ServerUpdateJob>(trigger =>
  47. trigger
  48. .WithIdentity("ServerUpdateJobTrigger")
  49. .StartNow()
  50. .WithSimpleSchedule(x => x
  51. .WithIntervalInMinutes(3)
  52. .RepeatForever())
  53. );
  54. q.ScheduleJob<ServerSetFeeJob>(trigger =>
  55. trigger
  56. .WithIdentity("ServerSetFeeJobTrigger")
  57. .StartNow()
  58. .WithSimpleSchedule(x => x
  59. .WithIntervalInMinutes(1)
  60. .RepeatForever())
  61. );
  62. q.ScheduleJob<ServerMessageJob>(trigger =>
  63. trigger
  64. .WithIdentity("ServerMessageJobTrigger")
  65. .StartNow()
  66. .WithSimpleSchedule(x => x
  67. .WithInterval(TimeSpan.FromMilliseconds(500))
  68. .RepeatForever())
  69. );
  70. q.ScheduleJob<HeartBeatCheckJob>(trigger =>
  71. trigger
  72. .WithIdentity("HeartBeatCheckJobTrigger")
  73. .StartNow()
  74. .WithSimpleSchedule(x => x
  75. .WithIntervalInSeconds(30)
  76. .RepeatForever())
  77. );
  78. q.ScheduleJob<HealthCheckTriggerJob>(trigger =>
  79. trigger
  80. .WithIdentity("HealthCheckTriggerJobTrigger")
  81. .StartNow()
  82. .WithSimpleSchedule(x => x
  83. .WithIntervalInMinutes(1)
  84. .RepeatForever())
  85. );
  86. q.ScheduleJob<SmartChargingJob>(trigger =>
  87. trigger
  88. .WithIdentity("SmartChargingJobTrigger")
  89. .StartNow()
  90. .WithSimpleSchedule(x => x
  91. .WithIntervalInMinutes(1)
  92. .RepeatForever())
  93. );
  94. q.ScheduleJob<DenyModelCheckJob>(trigger =>
  95. trigger
  96. .WithIdentity("DenyModelCheckJobTrigger")
  97. .StartNow()
  98. .WithSimpleSchedule(x => x
  99. .WithIntervalInMinutes(5)
  100. .RepeatForever())
  101. );
  102. //q.ScheduleJob<GoogleCheckJob>(trigger =>
  103. // trigger
  104. // .WithIdentity("GoogleCheckJobTrigger")
  105. // .StartNow()
  106. // .WithSimpleSchedule(x => x
  107. // .WithIntervalInSeconds(5)
  108. // .RepeatForever())
  109. //);
  110. });
  111. services.AddQuartzHostedService(opt =>
  112. {
  113. opt.WaitForJobsToComplete = true;
  114. });
  115. }
  116. }
  117. }