将发送到 Lambda 的 SQS 消息委托给其他服务来完成

将发送到 Lambda 的 SQS 消息委托给其他服务来完成

我有一个连接到 Lambda 函数的 SQS 队列,但我想将一些消息的完成委托给其他服务。

根据我对文档, 具体来说:

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

如果您的函数受到限制、返回错误或没有响应,则该消息将再次可见。失败批次中的所有消息都会返回到队列,因此您的函数代码必须能够多次处理同一条消息而不会产生副作用。

鉴于上述情况,按如下方式实现消息委托可以吗?

  1. Lambda 本身成功处理的消息会被明确删除,以避免不必要的重试。
  2. 对于需要委托的消息,将消息和接收句柄传递给其他服务,其他服务将根据需要扩展消息可见性,如果成功则删除该消息。
  3. 返回错误,以防止消息批次被自动删除。

这有用吗?

我真的不喜欢这似乎要求人们总是返回错误。还有其他方法可以将 SQS 队列绑定到 Lambda,同时允许所述 Lambda 将消息传递到其他服务吗?

相关内容