是否可以让SQS轮询Lambda将消息置于飞行中状态,而不是删除它们



当轮询Lambda读取消息时,它会在执行过程中将消息置于动态状态。完成后,它将删除该消息。但我希望Lambda不要删除这些消息,而是将它们保持在空中,并将收据句柄传递给外部进程。此外部进程将使用消息回执,并在完成时将其删除。

很难说,因为这取决于如何设置。

如果您使用事件源映射(ESM(根据您的SQS队列自动调用lambda,则lambda会在函数成功完成时自动删除队列中的消息

当函数成功处理一个批时,Lambda会从队列中删除其消息。

使其在完成功能后不删除消息的唯一方法是使其崩溃:

如果函数返回错误,则在Lambda接收到来自同一组的其他消息之前,将尝试对受影响的消息进行所有重试。

由于故意错误输出函数不是一种好的做法,我认为最好的方法是使用第二个SQS队列,并简单地为第二个进程重新广播消息

最新更新