public JobGrainInMem(ServiceBusWrapper wrapper, IOptions <JobTrackerConfig> options,
                      ILogger <JobGrainInMem> logger)
 {
     _wrapper = wrapper;
     _logger  = logger;
     _options = options;
 }
Exemple #2
0
 public JobGrain(ServiceBusWrapper wrapper, IOptions <JobTrackerConfig> options,
                 ILogger <JobGrain> logger, IMapper mapper)
 {
     _wrapper = wrapper;
     _logger  = logger;
     _options = options;
     _mapper  = mapper;
 }
 public ActionHandlerService(IClusterClient orleansClient, IOptions <JobTrackerConfig> jobTrackerConfig,
                             ServiceBusWrapper wrapper, ActionHandlerPool handlerPool, ILogger <ActionHandlerService> logger)
 {
     _orleansClient    = orleansClient;
     _wrapper          = wrapper;
     _logger           = logger;
     _handlerPool      = handlerPool;
     _jobTrackerConfig = jobTrackerConfig;
 }
Exemple #4
0
 public StateChecker(
     IClusterClient orleansClient,
     IOptions <JobTrackerConfig> jobTrackerConfig,
     ActionHandlerPool handlerPool,
     ServiceBusWrapper wrapper,
     ILogger <StateChecker> logger,
     IHostApplicationLifetime appLifetime) : base(appLifetime)
 {
     _orleansClient    = orleansClient;
     _wrapper          = wrapper;
     _jobTrackerConfig = jobTrackerConfig;
     _logger           = logger;
     _handlerPool      = handlerPool;
 }
        public InProcessSilo(IOptions <JobTrackerConfig> jobTrackerConfigOptions, ServiceBusWrapper wrapper,
                             IndexStorageAccountWrapper accountWrapper)
        {
            var siloConfig = jobTrackerConfigOptions.Value.SiloConfig;
            var jobEntityStorageOptions = new Action <AzureTableStorageOptions>(options =>
            {
                options.ConnectionString = siloConfig.JobEntityPersistConfig.ConnStr;
                options.UseJson          = siloConfig.JobEntityPersistConfig.UseJson;
                if (!string.IsNullOrEmpty(siloConfig.JobEntityPersistConfig.TableName))
                {
                    options.TableName = siloConfig.JobEntityPersistConfig.TableName;
                }
            });

            var readOnlyJobIndexStorageOptions = new Action <AzureBlobStorageOptions>(options =>
            {
                options.ConnectionString = siloConfig.ReadOnlyJobIndexPersistConfig.ConnStr;
                options.UseJson          = siloConfig.ReadOnlyJobIndexPersistConfig.UseJson;
                if (!string.IsNullOrEmpty(siloConfig.ReadOnlyJobIndexPersistConfig.ContainerName))
                {
                    options.ContainerName = siloConfig.ReadOnlyJobIndexPersistConfig.ContainerName;
                }
            });

            var builder = new SiloHostBuilder()
                          .UseLocalhostClustering(11111, 30000, null, siloConfig.ServiceId, siloConfig.ClusterId)
                          .ConfigureApplicationParts(parts =>
                                                     parts.AddApplicationPart(typeof(JobGrain).Assembly).WithReferences().WithCodeGeneration())
                          .AddAzureTableGrainStorage(Constants.JobEntityStoreName, jobEntityStorageOptions)
                          .AddAzureTableGrainStorage(Constants.JobRefStoreName, jobEntityStorageOptions)
                          .AddAzureTableGrainStorage(Constants.JobIdStoreName, jobEntityStorageOptions)
                          .AddAzureTableGrainStorage(Constants.JobIdOffsetStoreName, jobEntityStorageOptions)
                          .AddAzureBlobGrainStorage(Constants.ReadOnlyJobIndexStoreName, readOnlyJobIndexStorageOptions)
                          .ConfigureServices(services =>
            {
                services.AddSingleton(_ => jobTrackerConfigOptions);
                services.AddSingleton(_ => wrapper);
                services.AddSingleton(_ => accountWrapper);
            })
                          .Configure <GrainCollectionOptions>(options =>
            {
                options.CollectionAge = siloConfig.GrainCollectionAge ?? TimeSpan.FromMinutes(10);
                options.ClassSpecificCollectionAge[typeof(AggregateJobIndexGrain).FullName ?? throw new
                                                   InvalidOperationException()] = TimeSpan.FromMinutes(5);
                options.ClassSpecificCollectionAge[typeof(RollingJobIndexGrain).FullName ?? throw new
        public static async Task Main(string[] args)
        {
            var logger        = LoggerFactory.ConfigureLogger();
            var configuration = new ConfigurationBuilder()
                                .AddJsonFile("appsettings.json")
                                .AddCommandLine(args)
                                .Build();

            if (string.IsNullOrEmpty(configuration.Queue()))
            {
                Console.WriteLine("Please provide a queue name (--queue <name>)");
                return;
            }

            var(source, error) = SourceProviderFactory.GetSourceProvider();
            if (!string.IsNullOrEmpty(error))
            {
                Console.WriteLine(error);
                return;
            }

            var serviceBusWrapper = new ServiceBusWrapper(configuration, logger);
            var target            = new ServiceBusTarget(configuration, logger, serviceBusWrapper);

            logger.Info("Started loading data");
            var batchCounter = 0L;
            var loadTimer    = Stopwatch.StartNew();
            await source.LoadBatches(batch =>
            {
                loadTimer.Stop();
                batchCounter++;
                logger.Info($"Sending batch {batchCounter}, load took: {loadTimer.Elapsed.TotalSeconds}s");
                loadTimer.Restart();
                return(target.SendBatch(batch));
            });
        }
 public ServiceBusJobIdGrain(ServiceBusWrapper wrapper)
 {
     _wrapper = wrapper;
 }
Exemple #8
0
 public IdGenerator(ServiceBusWrapper wrapper, IOptions <JobTrackerConfig> options, ILogger <IdGenerator> logger)
 {
     _config  = options.Value.IdGeneratorConfig;
     _wrapper = wrapper;
     _logger  = logger;
 }