From 95bcb9af30655fea794f28925b3716986abcd055 Mon Sep 17 00:00:00 2001 From: Andrew Cartwright Date: Mon, 1 Mar 2021 17:03:52 +1000 Subject: [PATCH 1/2] Add support for both attributes and messsage attributes --- Amazon.SQS/src/Extensions.SQS/Extensions.SQS.csproj | 4 ++-- .../src/Extensions.SQS/Trigger/SqsQueueTriggerAttribute.cs | 7 +++++++ .../Trigger/SqsQueueTriggerBindingProvider.cs | 2 ++ .../src/Extensions.SQS/Trigger/SqsQueueTriggerListener.cs | 2 ++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Amazon.SQS/src/Extensions.SQS/Extensions.SQS.csproj b/Amazon.SQS/src/Extensions.SQS/Extensions.SQS.csproj index d5dda59..e21b469 100644 --- a/Amazon.SQS/src/Extensions.SQS/Extensions.SQS.csproj +++ b/Amazon.SQS/src/Extensions.SQS/Extensions.SQS.csproj @@ -20,8 +20,8 @@ - - + + diff --git a/Amazon.SQS/src/Extensions.SQS/Trigger/SqsQueueTriggerAttribute.cs b/Amazon.SQS/src/Extensions.SQS/Trigger/SqsQueueTriggerAttribute.cs index 01988ea..4a3e51e 100644 --- a/Amazon.SQS/src/Extensions.SQS/Trigger/SqsQueueTriggerAttribute.cs +++ b/Amazon.SQS/src/Extensions.SQS/Trigger/SqsQueueTriggerAttribute.cs @@ -2,6 +2,7 @@ namespace Azure.Functions.Extensions.SQS { using System; + using System.Collections.Generic; using Microsoft.Azure.WebJobs.Description; [Binding] @@ -15,5 +16,11 @@ public class SqsQueueTriggerAttribute : Attribute [AutoResolve] public string QueueUrl { get; set; } + + [AutoResolve] + public string MessageAttributeNames { get; set; } + + [AutoResolve] + public string AttributeNames { get; set; } } } diff --git a/Amazon.SQS/src/Extensions.SQS/Trigger/SqsQueueTriggerBindingProvider.cs b/Amazon.SQS/src/Extensions.SQS/Trigger/SqsQueueTriggerBindingProvider.cs index 4e39198..8dd3cd2 100644 --- a/Amazon.SQS/src/Extensions.SQS/Trigger/SqsQueueTriggerBindingProvider.cs +++ b/Amazon.SQS/src/Extensions.SQS/Trigger/SqsQueueTriggerBindingProvider.cs @@ -35,6 +35,8 @@ private SqsQueueTriggerAttribute ResolveTriggerParameters(SqsQueueTriggerAttribu AWSKeyId = this.Resolve(triggerAttribute.AWSKeyId), AWSAccessKey = this.Resolve(triggerAttribute.AWSAccessKey), QueueUrl = this.Resolve(triggerAttribute.QueueUrl), + MessageAttributeNames = this.Resolve(triggerAttribute.MessageAttributeNames), + AttributeNames = this.Resolve(triggerAttribute.AttributeNames) }; } diff --git a/Amazon.SQS/src/Extensions.SQS/Trigger/SqsQueueTriggerListener.cs b/Amazon.SQS/src/Extensions.SQS/Trigger/SqsQueueTriggerListener.cs index c397c38..40ba549 100644 --- a/Amazon.SQS/src/Extensions.SQS/Trigger/SqsQueueTriggerListener.cs +++ b/Amazon.SQS/src/Extensions.SQS/Trigger/SqsQueueTriggerListener.cs @@ -69,6 +69,8 @@ public async Task OnTriggerCallback() QueueUrl = this.TriggerParameters.QueueUrl, MaxNumberOfMessages = this.SqsQueueOptions.Value.MaxNumberOfMessages.Value, VisibilityTimeout = (int)this.SqsQueueOptions.Value.VisibilityTimeout.Value.TotalSeconds, + MessageAttributeNames = this.TriggerParameters.MessageAttributeNames.Split(',').ToList(), + AttributeNames = this.TriggerParameters.AttributeNames.Split(',').ToList() }; var result = await this.AmazonSQSClient.ReceiveMessageAsync(getMessageRequest); From 64e7380bd5e3af5ffce555d91f431be535127387 Mon Sep 17 00:00:00 2001 From: Andrew Cartwright Date: Tue, 2 Mar 2021 13:43:15 +1000 Subject: [PATCH 2/2] Update SqsQueueTriggerListener.cs Make use of Attribute parameters Null safe --- .../src/Extensions.SQS/Trigger/SqsQueueTriggerListener.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Amazon.SQS/src/Extensions.SQS/Trigger/SqsQueueTriggerListener.cs b/Amazon.SQS/src/Extensions.SQS/Trigger/SqsQueueTriggerListener.cs index 40ba549..893bf62 100644 --- a/Amazon.SQS/src/Extensions.SQS/Trigger/SqsQueueTriggerListener.cs +++ b/Amazon.SQS/src/Extensions.SQS/Trigger/SqsQueueTriggerListener.cs @@ -69,8 +69,8 @@ public async Task OnTriggerCallback() QueueUrl = this.TriggerParameters.QueueUrl, MaxNumberOfMessages = this.SqsQueueOptions.Value.MaxNumberOfMessages.Value, VisibilityTimeout = (int)this.SqsQueueOptions.Value.VisibilityTimeout.Value.TotalSeconds, - MessageAttributeNames = this.TriggerParameters.MessageAttributeNames.Split(',').ToList(), - AttributeNames = this.TriggerParameters.AttributeNames.Split(',').ToList() + MessageAttributeNames = this.TriggerParameters.MessageAttributeNames?.Split(',').ToList(), + AttributeNames = this.TriggerParameters.AttributeNames?.Split(',').ToList() }; var result = await this.AmazonSQSClient.ReceiveMessageAsync(getMessageRequest);