【发布时间】:2021-05-11 16:14:36
【问题描述】:
最近正在处理一个需要从 SFTP 下载文档并需要基于队列的实现的项目。
所以我选择了使用 SQS 和 lambda 的实现。每当文档进入 SFTP 时,我都会通过 web api 将文档信息推送到 SQS。在 SQS 消息正文中,我传递了文件名和其他信息。
还为 SQS 队列(使用的 FIFO 队列)创建了一个 .net core lambda 函数触发器。
public async Task FunctionHandler(SQSEvent evnt, ILambdaContext context)
{
try
{
//trigger web api
var response = GetDocumentFromSFTP(message.Body).Result;
}
catch (Exception ex)
{
LambdaLogger.Log("Error::" + ex.Message);
}
}
如果在调用外部 Web api 的 GetDocumentFromSFTP() 内部发生任何错误并返回标志 true 或 false,或者其他地方如何在不删除的情况下将消息保留在 SQS 队列中以便以后可以轮询相同的消息?
请帮忙?
更新:我已将一些消息推送到队列中,它已得到处理,即使在可见性时间结束后也看不到这些消息。但是抛出错误的消息我可以查看在死信队列中。请参考下图。这是一种已知行为吗?
【问题讨论】:
-
有人帮忙吗?
-
稍后会仔细研究一下,看看我是否可以提供帮助,但 DLQ 对您有用吗:aws.amazon.com/blogs/compute/…
标签: c# .net-core aws-lambda asp.net-core-webapi amazon-sqs