aws sqs lambda:消息不再出现

时间:2018-08-27 14:41:29

标签: amazon-web-services go aws-lambda aws-sdk amazon-sqs

我遵循标准的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)
}

2 个答案:

答案 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失败。