我有一个用Java编写的lambda函数,其句柄方法签名为:
public String handleRequest(SQSEvent sqsEvent, Context context){
//Todo
}
我的lambda函数接受SQS事件作为请求并处理逻辑。
万一我的lambda函数以某种方式失败,我想通过手动提供所需的输入数据来再次触发它。我的方法是创建一个新的lambda函数,该函数将调用我的主要lambda函数。我将使用带有必需参数的APIGateway触发新的lambda。
我们如何创建自己的SQS事件对象,以将其作为请求主体传递给我的主要lambda? SQSEvent对象所需的参数和结构是什么?
谢谢!
如果SQS是您的事件源,则消息将保留在那里,直到您从代码中的队列中将其删除为止。如果您的函数失败并且没有删除该消息,则可见性超时到期后将对其进行备份]]
如果事件持续导致重复失败,将其反馈给功能将无济于事,并会导致无休止的循环
现在,处理的性质可能使重试安全,而不必担心死循环,在这种情况下,您可以编写一个函数,该函数将从DLQ中提取消息并将其反馈回主队列,而无需调用直接“主要” lambda。但这就是说,我会非常仔细地查看以DLQ结尾的消息,它们可以表明您的代码中存在一些处理错误。