/// <summary> /// Scans the dlls and creates a dictionary in which each message in IFunctions is referenced to each function. /// </summary> public HandlersContainer(string serviceName, bool lockSaga = true) { lock (o) { this.serviceName = serviceName; this.lockSaga = SettingsUtil.HasSettings(SETTINGS.LOCKSAGAS)? SettingsUtil.GetSettings <bool>(SETTINGS.LOCKSAGAS):lockSaga; AddDependency <ISerializeMessages, JSONSerializer>(); AddDependency <ISagaLocker, SagaAzureStorageLocker>(); AddDependency <ISendMessages, AzureStorageQueueSendTransport>(SolveDependency <ISerializeMessages>()); AddDependency <IPublishEvents, AzureEventHubPublishTransport>(SolveDependency <ISerializeMessages>()); this.serializer = SolveDependency <ISerializeMessages>(); this.sagaLocker = SolveDependency <ISagaLocker>(); AddDependency <ISagaStoragePersistence, SagaAzureStoragePersistence>(this.sagaLocker as ISagaLocker, this.lockSaga); sagaPersistence = SolveDependency <ISagaStoragePersistence>(); messageSender = SolveDependency <ISendMessages>(); var assemblies = new List <Assembly>(); assemblies.Add(Assembly.GetCallingAssembly()); assemblies.AddRange(Assembly.GetCallingAssembly().GetReferencedAssemblies().Select(a => Assembly.Load(a.FullName))); var types = assemblies.SelectMany(a => a.GetTypes()); LookForSagas(types); LookForHandlers(types); this.sagaLocker.CreateLocksContainer(); sagaPersistence.CreateSagaPersistenceTableAsync().Wait(); } }
public SagaAzureStoragePersistence(ISagaLocker sagaLock, bool lockSagas) { this.sagaLock = sagaLock; this.lockSagas = lockSagas; storageAccount = CloudStorageAccount.Parse(SettingsUtil.GetSettings <string>(SETTINGS.AZURE_STORAGE)); }