Program.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using Cksoft.Unity;
  2. using Microsoft.Extensions.Configuration;
  3. using Microsoft.Extensions.DependencyInjection;
  4. using Quartz;
  5. using Quartz.Impl;
  6. using System;
  7. namespace BIOutputPush
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json");
  14. var configuration = builder.Build();
  15. IServiceCollection services = new ServiceCollection();
  16. services.AddOptions();
  17. NLog.ILogger logger = NLog.LogManager.LoadConfiguration("NLog.config").GetCurrentClassLogger();
  18. logger.Fatal("服务启动成功");
  19. //注入
  20. //services.Configure<AppConfig>(opts =>
  21. //{
  22. // configuration.GetSection("AppConfig").Bind(opts);
  23. //});
  24. //services.AddTransient<>();
  25. services.AddTransient<IConfiguration>(t =>
  26. {
  27. return configuration;
  28. });
  29. //构建容器
  30. IServiceProvider serviceProvider = services.BuildServiceProvider();
  31. // var config = serviceProvider.GetRequiredService<AppConfig>();
  32. var config = serviceProvider.GetRequiredService<IConfiguration>();
  33. int interval = Convert.ToInt32(configuration["Interval"]);
  34. var connStr = configuration.GetConnectionString("eap");
  35. AppConfigurtaionServices.Configuration = configuration;
  36. //创建一个作业调度池
  37. ISchedulerFactory schedf = new StdSchedulerFactory();
  38. IScheduler sched = schedf.GetScheduler().Result;
  39. //开始运行
  40. sched.Start();
  41. //创建出一个具体的作业
  42. IJobDetail job = JobBuilder.Create<PushOutputJob>().Build(); //配置一个触发器
  43. //创建出一个具体的作业
  44. var cron = $"0 */10 * * * ?"; //创建触发器
  45. ITrigger trigger = TriggerBuilder.Create()
  46. .WithIdentity("trigger1", "group1")
  47. .StartNow()
  48. .WithCronSchedule(cron)
  49. .Build();
  50. //加入作业调度池中
  51. sched.ScheduleJob(job, trigger).Wait();
  52. logger.Fatal("服务启动完成");
  53. while (true)
  54. {
  55. logger.Fatal("服务正在运行");
  56. System.Threading.Thread.Sleep(1000 * 3600);
  57. }
  58. //while (true)
  59. //{
  60. // if (DateTime.Now.Minute % 10 == 0)
  61. // {
  62. // Task.Run(() =>
  63. // {
  64. // using (IDatabase db = DbFactory.Base(connStr, DatabaseType.MySql))
  65. // {
  66. // try
  67. // {
  68. // string errorinfo = string.Empty;
  69. // var dal = new BICollectDal(db);
  70. // db.BeginTrans();
  71. // var res = dal.CollectOutput(ref errorinfo);
  72. // if (res > 0)
  73. // {
  74. // db.Commit();
  75. // logger.Fatal("推送BI产量数据成功");
  76. // }
  77. // else
  78. // {
  79. // db.Rollback();
  80. // logger.Error($"推送BI产量数据失败,原因为:{errorinfo}");
  81. // }
  82. // }
  83. // catch (Exception ex)
  84. // {
  85. // if (db != null)
  86. // db.Rollback();
  87. // logger.Error($"推送BI产量数据失败,原因为:{ex.ToString()}");
  88. // }
  89. // }
  90. // });
  91. // }
  92. // Thread.Sleep(30 * 1000);
  93. //}
  94. }
  95. }
  96. }