当轮询Lambda读取消息时,它会在执行过程中将消息置于动态状态。完成后,它将删除该消息。但我希望Lambda不要删除这些消息,而是将它们保持在空中,并将收据句柄传递给外部进程。此外部进程将使用消息回执,并在完成时将其删除。
很难说,因为这取决于如何设置。
如果您使用事件源映射(ESM(根据您的SQS队列自动调用lambda,则lambda会在函数成功完成时自动删除队列中的消息:
当函数成功处理一个批时,Lambda会从队列中删除其消息。
使其在完成功能后不删除消息的唯一方法是使其崩溃:
如果函数返回错误,则在Lambda接收到来自同一组的其他消息之前,将尝试对受影响的消息进行所有重试。
由于故意错误输出函数不是一种好的做法,我认为最好的方法是使用第二个SQS队列,并简单地为第二个进程重新广播消息。