C# AWS SQS-插入单个消息但只能获取列表?

C# AWS SQS-插入单个消息但只能获取列表?,c#,amazon-web-services,.net-core,amazon-sqs,C#,Amazon Web Services,.net Core,Amazon Sqs,我使用.NETCore访问SQS队列并从该队列中获取消息 一切正常 要插入消息,请执行以下操作: var sendMessageRequest = new SendMessageRequest(); sendMessageRequest.QueueUrl = queueName; sendMessageRequest.MessageBody = message; sqs.SendMessage(sendMessageRequest); 请注意,我只能插入一条消息: var sendM

我使用.NETCore访问SQS队列并从该队列中获取消息

一切正常

要插入消息,请执行以下操作:

 var sendMessageRequest = new SendMessageRequest();
 sendMessageRequest.QueueUrl = queueName;
 sendMessageRequest.MessageBody = message;
 sqs.SendMessage(sendMessageRequest);
请注意,我只能插入一条消息:

 var sendMessageRequest = new SendMessageRequest();
 sendMessageRequest.QueueUrl = queueName;
 sendMessageRequest.MessageBody = message;
 sqs.SendMessage(sendMessageRequest);

但是,当我查看
receivemessage
方法时:

 public static void GetMessage(AmazonSQSClient sqs , string queueName  )
        {
            var receiveMessageRequest = new ReceiveMessageRequest { QueueUrl = queueName };
            var receiveMessageResponse = sqs.ReceiveMessage(receiveMessageRequest);
我注意到我只能得到一个列表:

问题:

我不明白为什么我可以插入一条消息,但我可以阅读一个消息列表

即使队列中有许多消息,此代码^

我有6条信息:


如果您想在一个API调用中发送多条消息,则有
SendMessageBatch
文档和文档


如果您希望每个请求只接收一条消息,您可以将
ReceiveMessageRequest.MaxNumberOfMessages
设置为
1

谢谢,但是为什么AWS只给我一条消息,而我的队列中有5条消息(
当我明确要求5条时)?您不能明确要求SQS提供5。您很可能将最大消息数设置为5,但这并不保证您将获得5条消息,它只是保证您永远不会获得超过5条消息。您将
WaitTimeSeconds
设置为什么?如果这很低,可能会影响SQS为您打包消息的方式。明白了。是AWS决定取多少到这个最大边界。@RoyiNamir是的,但您应该始终将
WaitTimeSeconds
设置为20,除非您有特定的理由不这样做。完全不设置此选项将增加获得更少消息甚至0消息的机会,并且设置此选项不会导致SQS实际等待那么长时间,除非确实没有可用消息——在这种情况下,它将等待那么长时间,然后返回0,或者在下一条消息到达后立即返回。这大大降低了运营成本并提高了整体性能,这应该是默认行为。@Michael sqlbot我可以将maxNumberOfMessages设置为100,将receiveMessageWaitTimeSeconds设置为20。它能保证我在20秒内收到100条信息吗?我在文档中读到SQS总是在一个批处理调用中最多发送10条消息。你能帮我理解一下吗