【发布时间】:2018-12-04 12:02:33
【问题描述】:
我有一个文件阅读器,可以将 CSV 的每一行放入 SQS;订阅了一个 .Net lambda 函数以接收每一行并单独处理。
当一个项目完成处理(大约 1-3 秒)后,它会从队列中删除。
处理完一行后,它会将数据包发送到系统的另一个区域,但我在日志中看到的是我们正在从函数接收重复的数据包。
由于 lambda 函数同时运行;我的工作理论是,当一个函数可用于消费另一个项目时,队列项目仍在运行中 - 因此它会消费一个已经被处理的项目。
由于删除操作最后发生,我的解决方案是将删除操作移到函数的开头。
但是我担心这是否合理,好像函数在处理过程中挂起或超时,我们将完全丢失数据包。另外,如果我从队列中删除该项目;一旦解析了消息中的数据,该函数是否能够继续?
所以我的问题分为两部分
- 订阅 SQS 的 lambda 函数是否可以 收到飞行中的消息,而另一个相同的实例 函数已经在处理它了吗?
- 是否存在任何潜在问题 选择功能后,我立即删除队列项目 起来
【问题讨论】:
标签: .net amazon-web-services .net-core amazon-sqs