是否可以让 SQS 轮询 Lambda 将消息置于飞行状态而不是删除它们?
Is it possible to have an SQS polling Lambda put messages in an in-flight state instead of deleting them?
当轮询 Lambda 读取消息时,它会在执行期间将消息置于运行状态。完成后,它会删除消息。但相反,我希望 Lambda 不删除消息,而是让它们保持飞行状态,并将接收句柄传递给外部进程。此外部进程将使用消息回执并在完成时将其删除。
这很难说,因为这取决于你如何设置它。
如果您使用 event source mappings (ESM) 根据您的 SQS 队列自动调用 lambda,那么当您 [=21] 时,Lambda 会自动从队列中删除 消息=]函数成功完成:
When your function successfully processes a batch, Lambda deletes its messages from the queue.
让它在您的功能完成后不删除消息的唯一方法是让它崩溃:
If the function returns an error, all retries are attempted on the affected messages before Lambda receives additional messages from the same group.
由于故意出错的功能不是一个好习惯,我认为最好的方法是使用第二个 SQS 队列并简单地 re-broadcast 消息 第二个过程。
当轮询 Lambda 读取消息时,它会在执行期间将消息置于运行状态。完成后,它会删除消息。但相反,我希望 Lambda 不删除消息,而是让它们保持飞行状态,并将接收句柄传递给外部进程。此外部进程将使用消息回执并在完成时将其删除。
这很难说,因为这取决于你如何设置它。
如果您使用 event source mappings (ESM) 根据您的 SQS 队列自动调用 lambda,那么当您 [=21] 时,Lambda 会自动从队列中删除 消息=]函数成功完成:
When your function successfully processes a batch, Lambda deletes its messages from the queue.
让它在您的功能完成后不删除消息的唯一方法是让它崩溃:
If the function returns an error, all retries are attempted on the affected messages before Lambda receives additional messages from the same group.
由于故意出错的功能不是一个好习惯,我认为最好的方法是使用第二个 SQS 队列并简单地 re-broadcast 消息 第二个过程。