public JsonResult RunTask(int id) { TaskDetail td = taskService.Get(id); if (td == null) { return(Json(new { status = true, message = "执行失败!" })); } if (Utility.IsDistributedDeploy() && (td.RunAtServer == RunAtServer.Master || td.RunAtServer == RunAtServer.Search)) { try { TaskServiceClient client = new TaskServiceClient("WCFTaskService"); client.RunTask(id); } catch (Exception e) { return(Json(new { message = "执行失败!" })); } } else { TaskSchedulerFactory.GetScheduler().Run(id); } return(Json(new { success = true, message = "执行成功!" })); }
protected void Application_Start(object sender, EventArgs e) { var containerBuilder = new ContainerBuilder(); //注册运行环境 containerBuilder.Register(c => new DefaultRunningEnvironment()).As <IRunningEnvironment>().SingleInstance(); //注册系统日志 containerBuilder.Register(c => new Log4NetLoggerFactoryAdapter()).As <ILoggerFactoryAdapter>().SingleInstance(); //注册缓存 containerBuilder.Register(c => new DefaultCacheService(new MemcachedCache(), 1.0F)).As <ICacheService>().SingleInstance(); //注册IStoreProvider string fileServerRootPath = ConfigurationManager.AppSettings["DistributedDeploy:FileServerRootPath"]; string fileServerRootUrl = ConfigurationManager.AppSettings["DistributedDeploy:FileServerRootUrl"]; string fileServerUsername = ConfigurationManager.AppSettings["DistributedDeploy:FileServerUsername"]; string fileServerPassword = ConfigurationManager.AppSettings["DistributedDeploy:FileServerPassword"]; containerBuilder.Register(c => new DefaultStoreProvider(fileServerRootPath, fileServerRootUrl, fileServerUsername, fileServerPassword)).Named <IStoreProvider>("CommonStorageProvider").SingleInstance(); containerBuilder.Register(c => new DefaultStoreProvider(fileServerRootPath, fileServerRootUrl, fileServerUsername, fileServerPassword)).As <IStoreProvider>().SingleInstance(); //注册任务调度器 containerBuilder.Register(c => new QuartzTaskScheduler(RunAtServer.Master)).As <ITaskScheduler>().SingleInstance(); //通知提醒查询器 containerBuilder.Register(c => new NoticeReminderAccessor()).As <IReminderInfoAccessor>().SingleInstance(); IContainer container = containerBuilder.Build(); DIContainer.RegisterContainer(container); //启动主控端定时任务 TaskSchedulerFactory.GetScheduler().Start(); }
public static MmApplication GetMm(ushort mmPort, ushort gamePort, GameApplication gameApplication, int maximumPlayers = 2, int mmTime = 10000, int ddosConnectionsLevel = 300, int ddosConnectionCheckInterval = 5000) { var socketFactory = new LiteNetSockFactory(); var serializer = new BinarySerializer(); var serverLogger = new ConsoleLogger("M ", LogLevel.Error | LogLevel.Info | LogLevel.Debug); var config = new ApplicationConfig { PublicDomainNameOrAddress = "127.0.0.1", ListenPorts = new List <ushort> { mmPort }, BindToPortHttp = 7002, MaxPacketSize = 300, BasePacketBufferSize = 64, SendTickTimeMs = 20, SocketTickTimeMs = 10, SocketType = SocketType.BareSocket, ReceiveTickTimeMs = 20, IsConnectionDdosProtectionOn = false }; var roomPropertiesProvider = new FakeRoomPropertiesProvider3(250, maximumPlayers, mmTime); var taskSchedulerFactory = new TaskSchedulerFactory(serverLogger); var requestSender = new FakeSenderWithGameApplication(gameApplication, new Dictionary <byte, object> { { PropertyCode.RoomProperties.GameMode, (byte)GameMode.SinglePlayer } }, CreateRoomDelegate, UpdateRoomDelegate); var _mmPacketSender = new PacketBatchSender(taskSchedulerFactory, config, serverLogger); var _playerManager = new PlayersManager(Mock.Of <IMmMetrics>(), serverLogger); //_serverProvider = new MatchMakerServerInfoProvider(requestSender, taskSchedulerFactory, config, _serverLogger, _statsProvider); var _serverProvider = new FakeMatchMakerServerInfoProvider(requestSender, "127.0.0.1", $"{gamePort}"); var roomApiProvider = new DefaultRoomApiProvider(requestSender, serverLogger); var _mmRoomManager = new MM.Managers.RoomManager(_serverProvider, serverLogger, taskSchedulerFactory, roomApiProvider); var sender = GetSHamanMessageSender(serializer, _mmPacketSender, config, serverLogger); var _mmGroupManager = new MatchMakingGroupManager(serverLogger, taskSchedulerFactory, _playerManager, sender, Mock.Of <IMmMetrics>(), _mmRoomManager, roomPropertiesProvider, config); var matchMaker = new MatchMaker(_playerManager, _mmGroupManager); // // var _measures = new Dictionary<byte, object>(); // _measures.Add(FakePropertyCodes.PlayerProperties.Level, 1); // matchMaker.AddMatchMakingGroup(_measures); matchMaker.AddRequiredProperty(FakePropertyCodes.PlayerProperties.Level); var senderFactory = new ShamanMessageSenderFactory(serializer, config); var protectionManagerConfig = new ConnectionDdosProtectionConfig(ddosConnectionsLevel, ddosConnectionCheckInterval, 5000, 60000); var connectionDdosProtection = new ConnectDdosProtection(protectionManagerConfig, taskSchedulerFactory, serverLogger); var protectionManager = new ProtectionManager(connectionDdosProtection, protectionManagerConfig, serverLogger); //setup mm server return(new MmApplication(serverLogger, config, serializer, socketFactory, matchMaker, requestSender, taskSchedulerFactory, _mmPacketSender, senderFactory, _serverProvider, _mmRoomManager, _mmGroupManager, _playerManager, Mock.Of <IMmMetrics>(), protectionManager)); }
protected void Application_End(object sender, EventArgs e) { //保存定时任务状态 TaskSchedulerFactory.GetScheduler().SaveTaskStatus(); //关闭全文检索索引 foreach (SearchEngine searchEngine in SearchEngineService.searchEngines.Values) { searchEngine.Close(); } }
private void linkTaskSchedule_LinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e) { ITask task = TaskSchedulerFactory.CreateTask(); ITaskScheduler tasksched = TaskSchedulerFactory.CreateTaskScheduler(); String taskName = "mdumpfs - Backup Task"; Int32 i = 0; // param System.Text.StringBuilder sbParam = new System.Text.StringBuilder(); if (textExclude.Text.Trim().Length > 0) { sbParam.Append(" /re \"" + textExclude.Text.Trim() + "\""); } sbParam.Append(" /nogui /l " + numericLimitDay.Value); // タスクスケジュールアイテム 設定 task.SetApplicationName(Application.ExecutablePath); task.SetComment("バックアップ元: " + comboBackupDir.Text + "\r\n" + "保存先: " + comboDestDir.Text); task.SetParameters( String.Format("\"{0}\" \"{1}\" {2}", comboBackupDir.Text.TrimEnd(new Char[] { Path.DirectorySeparatorChar }), comboDestDir.Text.TrimEnd(new Char[] { Path.DirectorySeparatorChar }), sbParam.ToString())); // タスクスケジュールアイテム 保存 while (true) { try { tasksched.AddWorkItem(taskName, task); break; } catch (System.Runtime.InteropServices.COMException ex) { if (ex.ErrorCode == -2147024816) { // ファイルがある。 taskName = "mdumpfs - Backup Task (" + (i++) + ")"; } else { // 不明なエラー return; } } } // タスクスケジュールアイテム ダイアログ表示 if (task != null) { task.EditWorkItem(this.Handle, 0); } //tasksched.NewWorkItem("Test Task", Guids.CTask, Guids.ITask, out taskItem); }
public static GameApplication GetGame(List <ushort> gamePorts, bool isAuthOn = false) { var _roomControllerFactory = new FakeRoomControllerFactory(); var serverLogger = new ConsoleLogger("G ", LogLevel.Error | LogLevel.Info | LogLevel.Debug); var socketFactory = new LiteNetSockFactory(); var serializer = new BinarySerializer(); var taskSchedulerFactory = new TaskSchedulerFactory(serverLogger); var protectionManagerConfig = new ConnectionDdosProtectionConfig(300, 5000, 5000, 60000); var connectionDdosProtection = new ConnectDdosProtection(protectionManagerConfig, taskSchedulerFactory, serverLogger); var protectionManager = new ProtectionManager(connectionDdosProtection, protectionManagerConfig, serverLogger); var config = new ApplicationConfig { PublicDomainNameOrAddress = "127.0.0.1", ListenPorts = gamePorts, BindToPortHttp = 7000, MaxPacketSize = 300, BasePacketBufferSize = 64, SendTickTimeMs = 20, SocketTickTimeMs = 10, SocketType = SocketType.BareSocket, ReceiveTickTimeMs = 20, IsAuthOn = isAuthOn, IsConnectionDdosProtectionOn = false }; var requestSender = new FakeSenderWithGameApplication(null, new Dictionary <byte, object> { { PropertyCode.RoomProperties.GameMode, (byte)GameMode.SinglePlayer } }, CreateRoomDelegate, UpdateRoomDelegate); var gamePacketSender = new PacketBatchSender(taskSchedulerFactory, config, serverLogger); var gameSenderFactory = new ShamanMessageSenderFactory(serializer, config); var _roomManager = new Game.Rooms.RoomManager(serverLogger, serializer, config, taskSchedulerFactory, _roomControllerFactory, gamePacketSender, gameSenderFactory, Mock.Of <IGameMetrics>(), new RoomStateUpdaterStub()); //setup game server return(new GameApplication( serverLogger, config, serializer, socketFactory, taskSchedulerFactory, requestSender, _roomManager, gamePacketSender, Mock.Of <IGameMetrics>(), gameSenderFactory, protectionManager)); }
/// <summary> /// 执行任务 /// </summary> /// <param name="context">Quartz任务运行环境</param> /// <remarks>外部不需调用,仅用于任务调度组建内部</remarks> public void Execute(IJobExecutionContext context) { int Id = context.JobDetail.JobDataMap.GetInt("Id"); TaskDetail task = TaskSchedulerFactory.GetScheduler().GetTask(Id); if (task == null) { throw new ArgumentException("Not found task :" + task.Name); } TaskService taskService = new TaskService(); task.IsRunning = true; DateTime lastStart = DateTime.UtcNow; try { ITask excuteTask = (ITask)Activator.CreateInstance(Type.GetType(task.ClassType)); excuteTask.Execute(task); task.LastIsSuccess = true; } catch (Exception ex) { LoggerFactory.GetLogger().Error(ex, string.Format("Exception while running job {0} of type {1}", context.JobDetail.Key, context.JobDetail.JobType.ToString())); task.LastIsSuccess = false; } task.IsRunning = false; task.LastStart = lastStart; if (context.NextFireTimeUtc.HasValue) { task.NextStart = context.NextFireTimeUtc.Value.UtcDateTime; } else { task.NextStart = null; } task.LastEnd = DateTime.UtcNow; taskService.SaveTaskStatus(task); }
private void StartExpireTask() { var scheduler = TaskSchedulerFactory.CreateScheduler(); if (scheduler != null) { var r = new Random(DateTime.Now.Millisecond); var startOption = new StartOptions <ExpireTaskExecutor>(TimeSpan.FromSeconds(r.Next(1, 30)), TimeSpan.FromSeconds(r.Next(60, 130))) { Initializer = s => { s.CacheKey = _cacheKey; s.Deserialize = _deserialize; s.Client = _client; } }; scheduler.StartExecutor(startOption); } }
/// <summary> /// 执行定时任务 /// </summary> /// <param name="taskId">定时任务的Id</param> public void RunTask(int taskId) { TaskSchedulerFactory.GetScheduler().Run(taskId); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IApplicationLifetime appLifetime, IServiceProvider svp) { loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); HttpContextCore.ServiceProvider = svp; if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseBrowserLink(); } else { app.UseExceptionHandler("/Home/Error"); } string urlSuffix = string.Empty; var setting = Configuration["UseSuffix"]; if (setting.Equals("true", StringComparison.CurrentCultureIgnoreCase)) { urlSuffix = ".aspx"; } app.UseStaticFiles(); app.UseSession(); app.UseTimedJob(); app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationScheme = "Sexy.Cookie", AutomaticAuthenticate = true, LoginPath = new PathString("/System/ManageLogin" + urlSuffix), AccessDeniedPath = new PathString("/Error/GlobalError" + urlSuffix), AutomaticChallenge = true, CookieHttpOnly = true, ExpireTimeSpan = TimeSpan.FromMinutes(30), SlidingExpiration = true, ClaimsIssuer = "http://www.sexy.com", CookiePath = "/" }); TaskSchedulerFactory.GetScheduler().Start(); app.UseMvc(routes => { //routes.MapRoute( // name: "Route", // template: "{*path}", // defaults: new { controller = "Manage", action = "Login" } ); routes.MapRoute( name: "Error", template: "Error/{action}" + urlSuffix, defaults: new { controller = "Error" }); routes.MapRoute( name: "System", template: "System/{action}" + urlSuffix, defaults: new { controller = "System", action = "ManageLogin" }); routes.MapRoute( name: "Default", template: "", defaults: new { controller = "System", action = "ManageLogin" }); routes.MapRoute( name: "SystemUser", template: "System/User/{action}" + urlSuffix, defaults: new { controller = "SystemUser", action = "ManageUser" }); routes.MapRoute( name: "SystemPermissions", template: "System/Permissions/{action}" + urlSuffix, defaults: new { controller = "SystemPermissions", action = "ManagePermission" }); routes.MapRoute( name: "SystemGoods", template: "System/Goods/{action}" + urlSuffix, defaults: new { controller = "SystemGoods", action = "ManagerGoods" }); routes.MapRoute( name: "SystemBasics", template: "System/Basics/{action}" + urlSuffix, defaults: new { controller = "SystemBasics", action = "ManageOperation" }); routes.MapRoute( name: "SystemSettings", template: "System/Settings/{action}" + urlSuffix, defaults: new { controller = "SystemSettings", action = "SiteSettings" }); routes.MapRoute( name: "SystemPoint", template: "System/Point/{action}" + urlSuffix, defaults: new { controller = "SystemPoint", action = "ManagerPoint" }); routes.MapRoute( name: "SystemOrder", template: "System/Order/{action}" + urlSuffix, defaults: new { controller = "SystemOrder", action = "ManagerOrder" }); }); appLifetime.ApplicationStopped.Register(() => this.ApplicationContainer.Dispose()); }