Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net AWS SQS重新处理机上消息_.net_Amazon Web Services_.net Core_Amazon Sqs - Fatal编程技术网

.net AWS SQS重新处理机上消息

.net AWS SQS重新处理机上消息,.net,amazon-web-services,.net-core,amazon-sqs,.net,Amazon Web Services,.net Core,Amazon Sqs,我有一个文件阅读器,它将CSV的每一行放入SQS;一个.Net lambda函数被订阅来接收每一行并单独处理它 当一个项目完成处理(大约1-3秒)后,它将从队列中删除 一旦一行被处理,它就会向系统的另一个区域发送一个数据包,但我在日志中看到的是,我们正在从函数接收重复的数据包 由于lambda函数同时运行;我的工作原理是,当一个函数可以使用另一个项时,队列项仍然处于飞行状态,因此它使用的是已经在处理的项 当删除操作最后发生时,我的解决方案是将删除操作移到函数的开头 然而,我担心这是否合理,好像函

我有一个文件阅读器,它将CSV的每一行放入SQS;一个.Net lambda函数被订阅来接收每一行并单独处理它

当一个项目完成处理(大约1-3秒)后,它将从队列中删除

一旦一行被处理,它就会向系统的另一个区域发送一个数据包,但我在日志中看到的是,我们正在从函数接收重复的数据包

由于lambda函数同时运行;我的工作原理是,当一个函数可以使用另一个项时,队列项仍然处于飞行状态,因此它使用的是已经在处理的项

当删除操作最后发生时,我的解决方案是将删除操作移到函数的开头

然而,我担心这是否合理,好像函数在处理时挂起或超时,我们将完全丢失数据包。此外,如果我从队列中删除该项目;解析消息中的数据后,函数是否能够继续

所以我的问题分为两部分

  • 订阅SQS的lambda函数是否可以 接收飞行中的消息,而该消息的另一个实例 函数已经在处理它了吗
  • 是否存在任何潜在问题 我将在函数拾取后立即删除队列项目 把它弄起来

  • 尽量避免这种解决办法。您的函数可能会引发异常,或者由于lambdas的5分钟限制而被终止,您将丢失消息

    相反,我会根据函数处理消息所需的时间来调整可见性超时。 另一方面,您可以减少侦听器每次读取的消息数(默认为10条)。 因此,它将减少总体处理时间,并且处理时间将小于visibilityTimeout(默认情况下为timeout) 如果无法预测处理消息所需的时间,可以在收到消息后调整(延长)visibilityTimeout


    尽量避免这种解决方案。您的函数可能会引发异常,或者由于lambdas的5分钟限制而被终止,您将丢失消息

    相反,我会根据函数处理消息所需的时间来调整可见性超时。 另一方面,您可以减少侦听器每次读取的消息数(默认为10条)。 因此,它将减少总体处理时间,并且处理时间将小于visibilityTimeout(默认情况下为timeout) 如果无法预测处理消息所需的时间,可以在收到消息后调整(延长)visibilityTimeout


    谢谢,我会调查可见性超时,这是我没有考虑过的。标记为回答:)谢谢,我会调查可见性超时,这是我没有考虑过的。标记为答案:)