protected override IQueue <SimpleWorkItem> GetQueue(int retries = 1, TimeSpan?workItemTimeout = null, TimeSpan?retryDelay = null, int deadLetterMaxItems = 100, bool runQueueMaintenance = true) { // Don't run this as part of the tests yet return(null); #pragma warning disable CS0162 // Unreachable code detected var section = Configuration.GetSection("AWS"); #pragma warning restore CS0162 // Unreachable code detected string accessKey = section["ACCESS_KEY_ID"]; string secretKey = section["SECRET_ACCESS_KEY"]; if (String.IsNullOrEmpty(accessKey) || String.IsNullOrEmpty(secretKey)) { return(null); } var queue = new SQSQueue <SimpleWorkItem>(new SQSQueueOptions <SimpleWorkItem> { Credentials = new BasicAWSCredentials(accessKey, secretKey), Name = _queueName, Retries = retries, WorkItemTimeout = workItemTimeout.GetValueOrDefault(TimeSpan.FromMinutes(5)), LoggerFactory = Log, }); _logger.Debug("Queue Id: {queueId}", queue.QueueId); return(queue); }
protected override IQueue <SimpleWorkItem> GetQueue(int retries = 1, TimeSpan?workItemTimeout = null, TimeSpan?retryDelay = null, int[] retryMultipliers = null, int deadLetterMaxItems = 100, bool runQueueMaintenance = true) { // Don't run this as part of the tests yet return(null); #pragma warning disable CS0162 // Unreachable code detected var section = Configuration.GetSection("AWS"); #pragma warning restore CS0162 // Unreachable code detected string accessKey = section["ACCESS_KEY_ID"]; string secretKey = section["SECRET_ACCESS_KEY"]; if (String.IsNullOrEmpty(accessKey) || String.IsNullOrEmpty(secretKey)) { return(null); } // TODO: Add RetryMultipliers var queue = new SQSQueue <SimpleWorkItem>( o => o.Credentials(accessKey, secretKey) .Name(_queueName) .Retries(retries) //.RetryMultipliers(retryMultipliers ?? new[] { 1, 3, 5, 10 }) .WorkItemTimeout(workItemTimeout.GetValueOrDefault(TimeSpan.FromMinutes(5))) .LoggerFactory(Log)); _logger.LogDebug("Queue Id: {queueId}", queue.QueueId); return(queue); }
protected override IQueue <SimpleWorkItem> GetQueue(int retries = 1, TimeSpan?workItemTimeout = null, TimeSpan?retryDelay = null, int[] retryMultipliers = null, int deadLetterMaxItems = 100, bool runQueueMaintenance = true) { var queue = new SQSQueue <SimpleWorkItem>( o => o.ConnectionString($"serviceurl=http://localhost:4566;AccessKey=xxx;SecretKey=xxx") .Name(_queueName) .Retries(retries) //.RetryMultipliers(retryMultipliers ?? new[] { 1, 3, 5, 10 }) .WorkItemTimeout(workItemTimeout.GetValueOrDefault(TimeSpan.FromMinutes(5))) .LoggerFactory(Log)); _logger.LogDebug("Queue Id: {queueId}", queue.QueueId); return(queue); }
/// <summary> /// /// </summary> /// <param name="input"></param> /// <param name="context"></param> /// <returns></returns> public async Task CSharpLambdaFunctionHandler(ILambdaContext context) { //hook into the lambda logging with an nlog stub class //ideally would just use nlog, but this has less packages/overhead :) csharplambda.Helpers.Logger.context = context; var l = LogManager.GetLogger("csharp test function"); l.Info("Hello"); var result = await SQSQueue.Read("sqs.../csharpLambdaSQS"); var resulttext = result.GetData <string>(); l.Info($"input is {resulttext}, transform is {resulttext.ToUpper()}"); //will remove item from queue await result.Accept(); }
private async Task <bool> DeployAsync(SQSQueue queue, int count = 0) { try { using (var scope = this.scopeProvider.BeginLifetimeScope()) { var factory = scope.Resolve <ISQSQueueFactory>(); var queueUrl = await factory.GetQueueUrlAsync(queue.Name); if (string.IsNullOrEmpty(queueUrl)) { queueUrl = await factory.CreateQueueAsync(queue); } else { await factory.SetQueueAttributesAsync(queueUrl, queue); } await factory.SetDeadLetterSettingsAsync(queueUrl, queue); } this.logger.LogInformation($"Complete deploy {queue.Name}"); return(true); } catch (Exception ex) { if (count < 5) { var next = count + 1; var wait = next * 10; this.logger.LogInformation($"Retry deploy {queue.Name}. wait {wait} sec."); await Task.Delay(wait * 1000); return(await this.DeployAsync(queue, next)); } this.logger.LogWarning(ex, $"Error deploy {queue.Name}"); return(false); } }