public static async Task Run( [ServiceBusTrigger("datalockprocessor", Connection = "ServiceBusConnection")] string myQueueItem, [OrchestrationClient] DurableOrchestrationClient client, TraceWriter log) { try { log.Info("DataLockProcessor Starting"); // DI var commitmentProvider = new CommitmentProvider(); var accountProvider = new AccountProvider(); var earnings = JsonConvert.DeserializeObject <List <Earning> >(myQueueItem); var ukprn = earnings.Select(x => x.Ukprn).FirstOrDefault(); var commitments = commitmentProvider.GetCommitments(ukprn, earnings).ToList(); var accounts = accountProvider.GetAccounts(commitments.Select(x => x.EmployerAccountId).Distinct().ToList()); var input = new EarningsInput(ukprn, commitments, earnings, accounts); await client.StartNewAsync(nameof(EarningsOrchestrator), input); log.Info("DataLockProcessor Finishing"); } catch (Exception e) { log.Error("Error sending learner info", e); } }
protected override async Task OnActivateAsync() { ActorEventSource.Current.ActorMessage(this, "Actor activated."); // load commitments var sw = Stopwatch.StartNew(); var stateNames = await StateManager.GetStateNamesAsync(); if (stateNames != null && stateNames.Any()) { TestDataGenerator.Log("DataLockActorStateManager", $"skiping initialisation, state has {stateNames.Count()} keys"); Debug.WriteLine($"?????????????????????????????????? skiping initialisation, state has {stateNames.Count()} keys ?????????????????????????????????? "); return; } TestDataGenerator.Log("DataLockActorStateManager", $" initialising, state has no keys keys"); Debug.WriteLine($"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! initialising, state has no keys keys !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "); var cache = GetLocalCache(); ICommitmentProvider commitmentProvider = new CommitmentProvider(); //var table = CloudStorageAccount.Parse(Configuration.TableStorageServerConnectionString).CreateCloudTableClient().GetTableReference("Config"); //var tableOperation = TableOperation.Retrieve<ConfigEntity>("LOCAL", "Config"); //var json = await table.ExecuteAsync(tableOperation); //var map = JsonConvert.DeserializeObject<ConcurrentDictionary<long, long>>(((ConfigEntity) json.Result).Map); //Ukprn = map.Single(kvp => kvp.Value == Ukprn).Key; var commitments = commitmentProvider.GetCommitments(Ukprn) .GroupBy(c => string.Concat(c.Ukprn, "-", c.LearnerReferenceNumber)) .ToDictionary(c => c.Key, c => c.ToList()); Debug.WriteLine($"read from provider in {sw.ElapsedMilliseconds.ToString("##,###")}ms"); sw.Restart(); await cache.Reset(); foreach (var c in commitments) { await cache.Add(c.Key, c.Value); } Debug.WriteLine($"saved in state in {sw.ElapsedMilliseconds.ToString("##,###")}ms"); TestDataGenerator.Log("DataLockActorStateManager", $" saved in state in {sw.ElapsedMilliseconds.ToString("##,###")}ms"); }