public async Task Run([QueueTrigger("circuitbreaker", Connection = "CircuitBreakerStorageAccountConnectionString")] CircuitBreakerMessage message) { await _circuitBreakerRepository.UpdateConfigurationAsync(message); await _circuitBreakerRepository.AddOperationAsync(message); await _circuitBreakerRepository.UpdateStateAsync(message.ServiceName, message.FunctionName); }
public async Task AddOperationAsync(CircuitBreakerMessage message) { var tableReference = _storageAccount.CreateCloudTableClient().GetTableReference(TABLE_OPERATION); var operationEntity = new OperationEntity { IsSuccess = message.IsSuccess, PartitionKey = $"{message.ServiceName}_{message.FunctionName}", RowKey = Guid.NewGuid().ToString() }; await tableReference.ExecuteAsync(TableOperation.InsertOrMerge(operationEntity)); }
public async Task UpdateConfigurationAsync(CircuitBreakerMessage message) { var tableReference = _storageAccount.CreateCloudTableClient().GetTableReference(TABLE_CONFIGURATION); var configurationEntity = new ConfigurationEntity { PartitionKey = message.ServiceName, RowKey = message.FunctionName, FailureRequestThreshold = message.FailureRequestThreshold, FailureRequestThresholdMilliseconds = message.FailureRequestThresholdMilliseconds, HalfOpenSuccessThreshold = message.HalfOpenSuccessThreshold, OpenTimeoutExpireMilliseconds = message.OpenTimeoutExpireMilliseconds }; await tableReference.ExecuteAsync(TableOperation.InsertOrMerge(configurationEntity)); }