Пример #1
0
        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
            });
        }
Пример #2
0
 public SchedulerManager(QuartzNetConfig config, IScheduler scheduler, IJobStore jobStore, IServiceRoute serviceRoute)
 {
     _config       = config;
     _scheduler    = scheduler;
     _jobStore     = jobStore;
     _serviceRoute = serviceRoute;
 }
Пример #3
0
        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
            };
        }
Пример #5
0
        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));
        }
Пример #6
0
 public ILoadBalancer Create(IServiceRoute serviceRoute)
 {
     return(new LeastConnectionLoadBalancer(serviceRoute));
 }
Пример #7
0
 public FirstLoadBalancer(IServiceRoute serviceRoute)
 {
     _serviceRoute = serviceRoute;
 }
Пример #8
0
 public LoadBalancerFactory(LoadBalancerConfig config, IServiceRoute serviceRoute, IEnumerable <ILoadBalancerCreator> loadBalancerCreators)
 {
     _loadBalancerConfig   = config;
     _serviceRoute         = serviceRoute;
     _loadBalancerCreators = loadBalancerCreators;
 }
 public RoundRobinLoadBalancer(IServiceRoute serviceRoute)
 {
     _serviceRoute = serviceRoute;
 }
Пример #10
0
 public ILoadBalancer Create(IServiceRoute serviceRoute)
 {
     return(new FirstLoadBalancer(serviceRoute));
 }
Пример #11
0
 public ILoadBalancer Create(IServiceRoute serviceRoute)
 {
     return(new RoundRobinLoadBalancer(serviceRoute));
 }
 public LeastConnectionLoadBalancer(IServiceRoute serviceRoute)
 {
     _dic          = new ConcurrentDictionary <ServiceRouteDescriptor, long>();
     _serviceRoute = serviceRoute;
 }
Пример #13
0
 public ILoadBalancer Create(IServiceRoute serviceRoute)
 {
     return(new RandomLoadBalancer(serviceRoute));
 }
Пример #14
0
        public RouteController(ILogger <RouteController> logger, IHostEnvironment hostEnvironment, IServiceRoute serviceRoute)
        {
            _logger = logger;

            _serviceRoute = serviceRoute;
        }
Пример #15
0
 public RandomLoadBalancer(IServiceRoute serviceRoute)
 {
     _random       = new Random();
     _serviceRoute = serviceRoute;
 }