【发布时间】:2019-02-02 03:13:30
【问题描述】:
我遵循了使用 sqs 触发器的标准 aws lambda 创建。 然后我将消息发送到 sqs 队列,然后启动 lambda,然后将其写入标准输出。都很好。
问题是:我还没有删除收到的消息,我希望消息在 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)
}
【问题讨论】:
-
抱歉,您是否在等待触发 lambda 的同一消息再次触发 lambda?
-
是的。我假设如果 lambda 无法处理消息,那么该消息应该重新出现以进行重新处理,因为我还没有删除它。它应该如何工作?!
-
但是您的 lambda 在处理消息时并没有失败。如果您希望它失败,您可以调用
panic或从您的处理程序返回错误(nil表示一切顺利) -
哦,我明白了,让我试试吧!
-
你是对的,谢谢你,两次
标签: amazon-web-services go aws-lambda aws-sdk amazon-sqs