public RebusSliceActivityManager(IRebusSliceActivityManagerConfig config, Func <TActivity> instanceCreator) { _config = config; _activityFactory = instanceCreator; var instance = _activityFactory(); _name = instance.Resource.ToString().ToValidAzureServiceBusEntityName(); _dependencies = instance.Dependencies.Select(x => x.Resource); _container.AllowToResolveVariantCollections(); }
public RebusSliceActivityManager(IRebusSliceActivityManagerConfig config, Func <TActivity> instanceCreator) { _config = config; _activityFactory = instanceCreator; var instance = _activityFactory(); _name = instance.Resource.ToString().ToValidAzureServiceBusEntityName(); _dependencies = instance.Dependencies.Select(x => x.Resource); _container.AllowToResolveVariantCollections(); _container.ConfigureRebus(c => c .Logging(l => l.NLog()) .Transport(t => t.UseAzureServiceBus(_config.AsbConnectionString, "q_" + _name).AutomaticallyRenewPeekLock().UseLegacyNaming()) .Options(o => { o.EnableCompression(); o.SetMaxParallelism(1); o.SetNumberOfWorkers(1); o.SimpleRetryStrategy(maxDeliveryAttempts: ResourceConstants.MaxRetryCount); }) .Serialization(s => { var cfg = new JsonSerializerSettings(); cfg.ConfigureForNodaTime(DateTimeZoneProviders.Tzdb); cfg.TypeNameHandling = TypeNameHandling.None; cfg.ObjectCreationHandling = ObjectCreationHandling.Replace; s.UseNewtonsoftJson(cfg); }) .Sagas(s => s.StoreInSqlServer(_config.SagaSqlConnectionString, "REBUS_Saga_" + _name, "REBUS_SagaIndex_" + _name)) //.Timeouts(t => t.StoreInSqlServer(_config.SagaSqlConnectionString, "REBUS_Timeout_" + _name, true)) ); _container.Register <IHandleMessages <ResourceSliceReady>, SliceSplitter>(); _container.Register <IHandleMessages <Ark.Tasks.Messages.ResourceSliceReady>, SliceSplitter>(); _container.Register <IHandleMessages <SliceReady>, SliceActivitySaga>(); _container.Register <IHandleMessages <Ark.Tasks.Messages.SliceReady>, SliceActivitySaga>(); _container.Register <IHandleMessages <CoolDownMessage>, SliceActivitySaga>(); _container.Register <ISliceActivity>(_activityFactory); }