HostedProtalServer.cs 4.9 KB

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