示例#1
0
        private static void Main()
        {
            var loggerFactory = LoggerFactory.Create(builder =>
            {
                builder
                .SetMinimumLevel(LogLevel.Warning)
                .AddFilter("Microsoft", LogLevel.Warning)
                .AddFilter("System", LogLevel.Warning)
                .AddConsole();
            });

            RabbitMqJobs.Initialize(true, s =>
            {
                s.RabbitMqSettings.VirtualHost = "massivejobs";
                s.RabbitMqSettings.NamePrefix  = "examples.";
                s.MaxQueueLength   = QueueLength.NoLimit;
                s.PublishBatchSize = 400;
                s.JobLoggerFactory = new LoggerFactoryWrapper(loggerFactory);
            });

            Console.WriteLine("Testing periodic jobs. Press Enter to quit!");

            PeriodicJob.PublishPeriodic("test_periodic", "0/2 * * ? * *");

            Console.ReadLine();

            MassiveJobsMediator.DefaultInstance.Dispose();
        }
示例#2
0
        private static void Main()
        {
            // initialize Serilog

            Log.Logger = new LoggerConfiguration()
                         .MinimumLevel.Warning()
                         .WriteTo.Console()
                         .CreateLogger();

            // initialize RabbitMqJobs

            RabbitMqJobs.Initialize(true, s =>
            {
                s.RabbitMqSettings.VirtualHost = "massivejobs";
                s.RabbitMqSettings.NamePrefix  = "examples.";

                s.MaxQueueLength   = QueueLength.NoLimit;
                s.PublishBatchSize = 400;
                s.JobLoggerFactory = new MassiveJobs.Logging.Serilog.LoggerWrapperFactory();
            });

            Console.WriteLine("Testing periodic jobs. Press Enter to quit!");

            PeriodicJob.PublishPeriodic("test_periodic", "0/2 * * ? * *");

            Console.ReadLine();

            MassiveJobsMediator.DefaultInstance.Dispose();
        }
示例#3
0
        public void TestInit()
        {
            _performCount = 0;

            RabbitMqJobs.Initialize(true, s =>
            {
                s.RabbitMqSettings.VirtualHost   = "massivejobs.tests";
                s.RabbitMqSettings.NamePrefix    = "tests.";
                s.RabbitMqSettings.PrefetchCount = 1000;

                s.MaxDegreeOfParallelismPerWorker = 4;
                s.ImmediateWorkersCount           = 4;
                s.ScheduledWorkersCount           = 2;
                s.PeriodicWorkersCount            = 2;

                s.JobLoggerFactory = new DebugLoggerFactory();
            });
        }
        public static IServiceCollection AddMassiveJobs(
            this IServiceCollection serviceCollection,
            Action <RabbitMqJobsOptions> configureAction = null
            )
        {
            var options = new RabbitMqJobsOptions
            {
                RabbitMqSettings = new RabbitMqSettings()
            };

            configureAction?.Invoke(options);

            var massiveJobsSettings = RabbitMqJobs.CreateJobsSettings(options);

            serviceCollection.AddSingleton(massiveJobsSettings);

            if (options.JobLoggerFactory != null)
            {
                serviceCollection.AddSingleton(options.JobLoggerFactory);
            }
            else
            {
                serviceCollection.AddSingleton <IJobLoggerFactory>(p => new LoggerFactoryWrapper(p.GetRequiredService <ILoggerFactory>()));
            }

            if (options.JobSerializer != null)
            {
                serviceCollection.AddSingleton(options.JobSerializer);
            }
            else
            {
                serviceCollection.AddSingleton <IJobSerializer, DefaultSerializer>();
            }

            if (options.JobTypeProvider != null)
            {
                serviceCollection.AddSingleton(options.JobTypeProvider);
            }
            else
            {
                serviceCollection.AddSingleton <IJobTypeProvider, DefaultTypeProvider>();
            }

            serviceCollection.AddSingleton <IJobRunner>(p =>
                                                        new DefaultJobRunner(p.GetRequiredService <IJobLoggerFactory>().CreateLogger <DefaultJobRunner>()));

            serviceCollection.AddSingleton <IMessagePublisher>(p =>
                                                               new RabbitMqMessagePublisher(options.RabbitMqSettings, massiveJobsSettings, p.GetRequiredService <IJobLoggerFactory>().CreateLogger <RabbitMqMessagePublisher>()));

            serviceCollection.AddSingleton <IMessageConsumer>(p =>
                                                              new RabbitMqMessageConsumer(options.RabbitMqSettings, massiveJobsSettings, p.GetRequiredService <IJobLoggerFactory>().CreateLogger <RabbitMqMessageConsumer>()));

            serviceCollection.AddScoped <IJobPublisher>(svcProvider =>
            {
                return(new DefaultJobPublisher(
                           svcProvider.GetService <MassiveJobsSettings>(),
                           svcProvider.GetService <IMessagePublisher>(),
                           svcProvider.GetService <IJobTypeProvider>(),
                           svcProvider.GetService <IJobSerializer>(),
                           svcProvider.GetService <IJobLoggerFactory>().CreateLogger <DefaultJobPublisher>()
                           ));
            });

            return(serviceCollection);
        }