コード例 #1
0
        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();
        }
コード例 #2
0
        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);
        }