public SchedulingConfiguration(IQuartzConfig quartzConfig, ILogger logger, IPublisher publisher, ICommandExecutor executor) { _commandExecutor = executor; _publisher = publisher; _logger = logger; _quartzConfig = quartzConfig; }
public GridNodeContainerConfiguration(ActorSystem actorSystem, TransportMode transportMode, IQuartzConfig config) { _config = config; _transportMode = transportMode; _actorSystem = actorSystem; }
public GridDomainNode(IContainerConfiguration configuration, IMessageRouteMap messageRouting, Func <ActorSystem[]> actorSystemFactory, IQuartzConfig quartzConfig = null) { _actorSystemFactory = actorSystemFactory; _quartzConfig = quartzConfig ?? new InMemoryQuartzConfig(); _configuration = configuration; _messageRouting = new CompositeRouteMap(messageRouting, new TransportMessageDumpMap() ); }
public SchedulerFactory( IQuartzConfig config, ILoggingSchedulerListener loggingSchedulerListener, ILoggingJobListener loggingJobListener, IJobFactory jobFactory, IRetrySettings retrySettings ) { _retrySettings = retrySettings; _config = config; _loggingSchedulerListener = loggingSchedulerListener; _loggingJobListener = loggingJobListener; _jobFactory = jobFactory; }
//TODO: refactor to good config via IContainerConfiguration public static void Init(IUnityContainer container, ActorSystem actorSystem, TransportMode transportMode, IQuartzConfig config = null) { container.Register(new QuartzSchedulerConfiguration(config ?? new PersistedQuartzConfig())); container.RegisterInstance <IRetrySettings>(new InMemoryRetrySettings(5, TimeSpan.FromMinutes(10), new DefaultExceptionPolicy())); //TODO: replace with config IActorTransport transport; switch (transportMode) { case TransportMode.Standalone: transport = new LocalAkkaEventBusTransport(actorSystem); break; case TransportMode.Cluster: transport = new DistributedPubSubTransport(actorSystem); break; default: throw new ArgumentException(nameof(transportMode)); } container.RegisterInstance <IPublisher>(transport); container.RegisterInstance <IActorSubscriber>(transport); container.RegisterInstance <IActorTransport>(transport); container.RegisterType <IHandlerActorTypeFactory, DefaultHandlerActorTypeFactory>(); container.RegisterType <IAggregateActorLocator, DefaultAggregateActorLocator>(); container.RegisterType <IPersistentChildsRecycleConfiguration, DefaultPersistentChildsRecycleConfiguration>(); container.RegisterInstance <IAppInsightsConfiguration>(AppInsightsConfigSection.Default ?? new DefaultAppInsightsConfiguration()); container.RegisterInstance <IPerformanceCountersConfiguration>(PerformanceCountersConfigSection.Default ?? new DefaultPerfCountersConfiguration()); container.RegisterInstance(actorSystem); var executor = new AkkaCommandExecutor(actorSystem, transport); container.RegisterType <ICommandExecutor, AkkaCommandExecutor>(); var messageWaiterFactory = new MessageWaiterFactory(executor, actorSystem, TimeSpan.FromSeconds(15), transport); container.RegisterInstance <IMessageWaiterFactory>(messageWaiterFactory); container.RegisterInstance <ICommandWaiterFactory>(messageWaiterFactory); }
private void ConfigureContainer(IUnityContainer unityContainer, IQuartzConfig quartzConfig, ActorSystem actorSystem) { unityContainer.Register(new GridNodeContainerConfiguration(actorSystem, _transportMode, quartzConfig)); _configuration.Register(unityContainer); var persistentScheduler = System.ActorOf(System.DI().Props <SchedulingActor>(), nameof(SchedulingActor)); unityContainer.RegisterInstance(new TypedMessageActor <ScheduleMessage>(persistentScheduler)); unityContainer.RegisterInstance(new TypedMessageActor <ScheduleCommand>(persistentScheduler)); unityContainer.RegisterInstance(new TypedMessageActor <Unschedule>(persistentScheduler)); unityContainer.RegisterInstance(_messageRouting); }
public static NodeTestFixture EnableScheduling(this NodeTestFixture fixture, IQuartzConfig config = null, bool clearScheduledData = true) { IQuartzConfig quartzConfig = config ?? new InMemoryQuartzConfig(new InMemoryRetrySettings(5, TimeSpan.FromMinutes(10), new DefaultExceptionPolicy())); fixture.OnNodeCreatedEvent += (o, node) => { var ext = node.System.InitSchedulingExtension(quartzConfig, node.Log, node.Transport, node); node.DomainConfigurations.Add(new FutureAggregateHandlersDomainConfiguration(ext.SchedulingActor, node.Log)); }; if (clearScheduledData) { fixture.OnNodeStartedEvent += (sender, args) => fixture.Node.System.GetExtension <SchedulingExtension>().Scheduler.Clear(); } return(fixture); }
public static SchedulingExtension InitSchedulingExtension(this ActorSystem system, IQuartzConfig quartzConfig, ILogger logger, IPublisher publisher, ICommandExecutor executor) { if (system == null) { throw new ArgumentNullException(nameof(system)); } var ext = (SchedulingExtension)system.RegisterExtension(SchedulingExtensionProvider.Provider); var schedulingContainer = new ContainerBuilder(); new SchedulingConfiguration(quartzConfig, logger, publisher, executor).Register(schedulingContainer); var container = schedulingContainer.Build(); ext.Scheduler = container.Resolve <IScheduler>(); ext.SchedulingActor = system.ActorOf(Props.Create(() => new SchedulingActor()), nameof(SchedulingActor)); system.RegisterOnTermination(() => { try { if (ext.Scheduler != null && ext.Scheduler.IsShutdown == false) { ext.Scheduler.Shutdown(false); } } catch (Exception ex) { system.Log.Warning($"Got error on quartz scheduler shutdown:{ex}"); } }); return(ext); }
public BalanceFixture(ITestOutputHelper output, IQuartzConfig config = null) : base(output) { BalanceDomainDonfiguration = new BalanceDomainDonfiguration(); this.EnableScheduling(config ?? new InMemoryQuartzConfig(new InMemoryRetrySettings(1, null, new NeverRetryExceptionPolicy()))); Add(BalanceDomainDonfiguration); }
public BalloonFixture(ITestOutputHelper output, IQuartzConfig config = null) : base(output) { this.EnableScheduling(config); _balloonDomainConfiguration = new BalloonDomainConfiguration(); Add(_balloonDomainConfiguration); }
public QuartzSchedulerConfiguration(IQuartzConfig quartzConfig) { _quartzConfig = quartzConfig; }
public FutureEventsFixture(ITestOutputHelper output, IQuartzConfig config, bool clearScheduledData = true) : base(output) { Add(new FutureAggregateDomainConfiguration()); this.EnableScheduling(config, clearScheduledData); }