amazon-web-services - aws sqs lambda : messages not re-appearing

标签 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)
}

最佳答案

从与 OP 的对话中得出答案

问题:Op 想检查当事件失败时 SQS 如何重试发送事件到 lambda。 Op 提供了用 Go 编写的 lambda 函数的代码

问题:提供的 lambda 不会失败,因此不会发生重试行为。

解决方案:重写 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 error.New("Song by B.S.")
    }

关于amazon-web-services - aws sqs lambda : messages not re-appearing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52041726/

相关文章:

mysql - Lambda 函数向 RDS 插入数据时出现 ETIMEDOUT

amazon-web-services - DynamoDB 在更新期间返回 `Invalid UpdateExpression: Expression size has exceeded the maximum allowed size`

mongodb - 使用 mongo-go-driver 和接口(interface)将游标反序列化为数组

CGO : use typedef struct in preamble

amazon-web-services - 从 VPC 内部访问 VPC 外部的 AWS 资源 - 无服务器框架

node.js - Alexa 技能 : is it possible to pause and resume the skill programmatically?

amazon-web-services - VPC SSL/HTTPS 环境

amazon-web-services - 从 VPC 中的 Lambda 发布到 SNS

amazon-web-services - 有没有办法在运行时配置和更改 Yarn 调度程序?

go - Go包命名约定背后的想法是什么?