amazon-web-services - aws sqs lambda:消息没有重新出现
问题描述
我已经使用 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)
}
解决方案
从与 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.")
}
推荐阅读
- django - 获取用户名和uuid
- docker - 一些已安装的包在容器运行时不可用
- objective-c - MacOSX 将命令添加到 Dock 图标
- python - 张量流概率中的贝叶斯神经网络
- node.js - 如何在没有 npm start 的情况下在 Cpanel 上启动套接字服务器(server.js)
- java - 我有线程问题
- javascript - 排序元素vanila js
- google-app-maker - 在哪里可以找到 Google 应用制造商个人版?
- java - 我为指数编写的这个基本程序只适用于整数——我做错了什么?
- arrays - 使用 Delphi XE8 数组初始化的 WSDL