C#AWS SQS读取所有邮件而不删除

kno*_*ker 3 c# amazon-sqs amazon-web-services

我希望使用C#从AWS SQS中读取队列中的所有消息而不删除它们,但我只获取最后一条消息.

这是代码

 ReceiveMessageRequest rmr = new ReceiveMessageRequest();
        rmr.QueueUrl = url;
        rmr.MaxNumberOfMessages = 10;
        AmazonSQSClient sq = new AmazonSQSClient("xx", "yy");
        ReceiveMessageResponse rmrep = sq.ReceiveMessage(rmr);
        ReceiveMessageResult rmres = rmrep.ReceiveMessageResult;
        //DeleteMessageRequest dmr = new DeleteMessageRequest();

        string msgid = "";
        string rephandle = "";
        XmlDocument xl = new XmlDocument();

        for (int i = 0; i < rmres.Message.Count;i++ )
        {
            rmrep = sq.ReceiveMessage(rmr);
            rmres = rmrep.ReceiveMessageResult;
            object y = JsonConvert.DeserializeObject<object>(rmres.Message[0].Body);
           int z= y.add();
           MessageBox.Show(z.ToString());
        }
Run Code Online (Sandbox Code Playgroud)

E.J*_*nan 6

队列不是数据库表; 你不能只是'阅读所有的消息'.你告诉SQS你想要一些消息,它会挑选一些并发送给你; 你不能要求它或期望它通过队列中的唯一消息列表进行迭代并将它们呈现给你,它不是为了那个目的.

如果您阅读1或消息,并删除它们(或将它们放在另一个队列中),那么最终您可以"读取所有消息",但只要您不删除任何消息,您可能会继续获得服务一些消息多次.