public static async Task <JobRuntime> CreateJobRuntime(IServiceRoute serviceRoute, JobEntity jobView) { var assemblyPath = await GetJobAssemblyPath(serviceRoute, jobView); if (string.IsNullOrWhiteSpace(assemblyPath)) { throw new FileNotFoundException($"{jobView.FilePath}不存在"); } var domain = DomainManager.Create(jobView.Id); var assembly = domain.LoadFile(assemblyPath); Type type = assembly.GetType(jobView.ClassName, true, true); var instance = Activator.CreateInstance(type) as JobBase; if (instance == null) { throw new InvalidCastException($"程序集: {jobView.AssemblyName} 创建Job实例失败,请确认 {jobView.ClassName} 是否派生自JobBase"); } return(new JobRuntime() { JobView = jobView, Domain = domain, Instance = instance }); }
public SchedulerManager(QuartzNetConfig config, IScheduler scheduler, IJobStore jobStore, IServiceRoute serviceRoute) { _config = config; _scheduler = scheduler; _jobStore = jobStore; _serviceRoute = serviceRoute; }
public PackagesController(ILogger <PackagesController> logger, IHostEnvironment hostEnvironment, ISchedulerRemoting schedulerRemoting, IServiceRoute serviceRoute) { _logger = logger; _hostEnvironment = hostEnvironment; _schedulerRemoting = schedulerRemoting; _serviceRoute = serviceRoute; _jobDirectory = Config.Options.JobDirectory; var allowedFileExtensions = Config.Options.JobAllowedFileExtension; _allowedFileExtension = string.IsNullOrWhiteSpace(allowedFileExtensions) ? new string[] { ".zip" } : allowedFileExtensions.Split(',', StringSplitOptions.RemoveEmptyEntries); }
public ConsulHostedService(IServiceRoute serviceRoute, RegisterServiceConfig registerServiceConfig) { _serviceRoute = serviceRoute; _registerServiceConfig = registerServiceConfig; _registerSrvice = new ServiceRouteDescriptor() { Id = ObjectId.Default().NextString(), Name = _registerServiceConfig.Name, Address = _registerServiceConfig.Address, Port = _registerServiceConfig.Port, HealthCheckType = _registerServiceConfig.HealthCheckType, HealthCheck = _registerServiceConfig.HealthCheck }; }
public static async Task <string> GetJobAssemblyPath(IServiceRoute serviceRoute, JobEntity jobView) { //job解压缩后的目录 var directoryPath = $"{Directory.GetCurrentDirectory()}\\{Config.Options.JobDirectory}\\src\\{jobView.Id}{jobView.Name}".Replace('\\', Path.DirectorySeparatorChar); if (!Directory.Exists(directoryPath)) { var zipPath = $"{Directory.GetCurrentDirectory()}\\{Config.Options.JobDirectory}\\{jobView.FilePath}".Replace('\\', Path.DirectorySeparatorChar); //下载 if (!File.Exists(zipPath)) { var downloadResult = false; var services = await serviceRoute.DiscoverServices("manager"); foreach (var service in services) { try { var url = $"http://{service.Address}:{service.Port}/Api/Packages/DownloadPackage?packageName={jobView.FilePath}"; using (var webClient = new WebClient()) { await webClient.DownloadFileTaskAsync(url, zipPath); downloadResult = true; break; } } catch { } } if (!downloadResult) { //下载失败 删除文件 if (File.Exists(zipPath)) { File.Delete(zipPath); } return(null); } } //将指定zip解压缩到对应的目录下 ZipFile.ExtractToDirectory(zipPath, directoryPath, true); } DeleteJobBaseAssemblyFromOutput(directoryPath); return($"{Directory.GetCurrentDirectory()}\\{Config.Options.JobDirectory}\\src\\{jobView.Id}{jobView.Name}\\{jobView.AssemblyName}.dll".Replace('\\', Path.DirectorySeparatorChar)); }
public ILoadBalancer Create(IServiceRoute serviceRoute) { return(new LeastConnectionLoadBalancer(serviceRoute)); }
public FirstLoadBalancer(IServiceRoute serviceRoute) { _serviceRoute = serviceRoute; }
public LoadBalancerFactory(LoadBalancerConfig config, IServiceRoute serviceRoute, IEnumerable <ILoadBalancerCreator> loadBalancerCreators) { _loadBalancerConfig = config; _serviceRoute = serviceRoute; _loadBalancerCreators = loadBalancerCreators; }
public RoundRobinLoadBalancer(IServiceRoute serviceRoute) { _serviceRoute = serviceRoute; }
public ILoadBalancer Create(IServiceRoute serviceRoute) { return(new FirstLoadBalancer(serviceRoute)); }
public ILoadBalancer Create(IServiceRoute serviceRoute) { return(new RoundRobinLoadBalancer(serviceRoute)); }
public LeastConnectionLoadBalancer(IServiceRoute serviceRoute) { _dic = new ConcurrentDictionary <ServiceRouteDescriptor, long>(); _serviceRoute = serviceRoute; }
public ILoadBalancer Create(IServiceRoute serviceRoute) { return(new RandomLoadBalancer(serviceRoute)); }
public RouteController(ILogger <RouteController> logger, IHostEnvironment hostEnvironment, IServiceRoute serviceRoute) { _logger = logger; _serviceRoute = serviceRoute; }
public RandomLoadBalancer(IServiceRoute serviceRoute) { _random = new Random(); _serviceRoute = serviceRoute; }