Сообщения не принимаются из очереди aws sqs fifo в ядре .net - PullRequest
0 голосов
/ 05 апреля 2019

Я использовал инструментарий aws в .net для извлечения сообщений из aws sqs в лямбда-функции, но сообщения не приходят. В этом коде консоль sqs также пустует в cloudwatch, и тот же receiveMessageResponse также пуст.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

using Amazon;
using Amazon.Lambda.Core;
using Amazon.SQS;
using Amazon.SQS.Model;


 [assembly: 
LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]

    namespace AWSLambda1
     {
     public class Function
     {

    /// <summary>
    /// A simple function that takes a string and does a ToUpper
    /// </summary>
    /// <param name="input"></param>
    /// <param name="context"></param>
    /// <returns></returns>
    public string FunctionHandler(string input, ILambdaContext context)
    {
        var sqs = new AmazonSQSClient();
        System.Console.Write("sqs", sqs);
        var queueUrl = "myqueueUrl";
        var receiveMessageRequest = new ReceiveMessageRequest{ QueueUrl = queueUrl};
        var receiveMessageResponse = sqs.ReceiveMessageAsync(receiveMessageRequest);
        System.Console.Write("M", receiveMessageResponse);
            return "true";

    }
}

}

1 Ответ

0 голосов
/ 06 мая 2019

Вот фрагмент кода, который я использую для чтения очереди, попробуйте и используйте его и посмотрите, работает ли он

static async Task<string> Start()
        {
            string AccessKey = "";
            string SecretKey = "";
            string SQSqueues = "https://sqs.";

            RegionEndpoint Region = RegionEndpoint.

            bool processedSQS = false;
            AWSCredentials credentials = new BasicAWSCredentials(AccessKey, SecretKey);
            var AwsRegion = Region;
            var SQSClient = new AmazonSQSClient(credentials, Region);

            var SQSRequest = new ReceiveMessageRequest
            {
                MessageAttributeNames = AttributesList,
                AttributeNames = new List<string>() { "All" },
                MaxNumberOfMessages = 10,
                QueueUrl = SQSqueues,
                VisibilityTimeout = (int)TimeSpan.FromMinutes(10).TotalSeconds,
                WaitTimeSeconds = (int)TimeSpan.FromSeconds(5).TotalSeconds
            };
            var SQSResponse = SQSClient.ReceiveMessageAsync(SQSRequest);
            SQSResponse.Wait();
            string JsonPass = null;

            if (SQSResponse.Result.Messages.Count > 0)
            {
                foreach (var Message in SQSResponse.Result.Messages)
                {
                    string SqsMessage = Message.Body;
                    bool CallUpload = await Insert.GetConfig(SqsMessage, credentials, AwsRegion, tableName);

                    if (CallUpload == true)
                    {
                        var deleteRequest = new DeleteMessageRequest
                        {
                            QueueUrl = SQSqueues,
                            ReceiptHandle = Message.ReceiptHandle
                        };
                        var deleteResponse = SQSClient.DeleteMessageAsync(deleteRequest);
                        deleteResponse.Wait();
                    }
                }

            }
            return "";
        }
...