我遵循标准的AWS Lambda创建和sqs触发器。 然后,我将消息发送到sqs队列,该队列随后启动lambda,后者又写入stdout。一切都很好。
问题是:我尚未删除该邮件的收据,我希望该邮件在可见性60秒(默认)后会再次出现以进行处理。这没有发生,想知道为什么。
package main
import (
"context"
"fmt"
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-lambda-go/lambda"
)
func handler(ctx context.Context, sqsEvent events.SQSEvent) error {
for _, message := range sqsEvent.Records {
fmt.Println("Id", message.MessageId)
fmt.Println("Source", message.EventSource)
fmt.Println("Body", message.Body)
}
return nil
}
func main() {
lambda.Start(handler)
}
答案 0 :(得分:1)
在与OP的对话中做出答案
问题:Op希望检查事件失败时SQS如何重试将事件发送到lambda。 Op提供了用Go编写的lambda函数的代码
问题:提供的lambda不会失败,因此不会发生任何重试行为。
解决方案:重写lambda,使其始终失败。
new webpack.BannerPlugin({ banner: '#!/usr/bin/env node', raw: true })
答案 1 :(得分:1)
默认情况下,如果您的lambda成功,它将自动从队列中删除消息。如果要将消息保留在队列中,则必须使用回调和错误或context.fail
明确使lambda失败。