第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

創(chuàng)建從 SQS 讀取而不終止的 GO 應用程序

創(chuàng)建從 SQS 讀取而不終止的 GO 應用程序

Go
守著一只汪 2023-02-14 18:04:18
我是 Go 的新手,無論如何我都不是經(jīng)驗豐富的開發(fā)人員,所以請隨意抨擊。我正在嘗試創(chuàng)建一個將駐留在容器中并從 AWS SQS 讀取的 GO 應用程序。目標是應用程序長期存在并不斷從隊列中讀取。這是我目前作為示例使用的代碼。我最大的問題是這是否是對 GOTO 的錯誤使用,是否有更好的方法。先感謝您package mainimport (    "context"    "fmt"    "log"    "github.com/aws/aws-sdk-go-v2/aws"    "github.com/aws/aws-sdk-go-v2/config"    "github.com/aws/aws-sdk-go-v2/service/sqs")const (    maxMessages = 1)func GetQueueURL(cfg aws.Config, queue string) (*sqs.GetQueueUrlOutput, error) {    sqsClient := sqs.NewFromConfig(cfg)    result, err := sqsClient.GetQueueUrl(context.TODO(), &sqs.GetQueueUrlInput{        QueueName: &queue,    })    if err != nil {        return nil, err    }    return result, nil}func GetMessages(cfg aws.Config, queueUrl string, maxMessages int32) (*sqs.ReceiveMessageOutput, error) {    sqsClient := sqs.NewFromConfig(cfg)    msgResult, err := sqsClient.ReceiveMessage(context.TODO(), &sqs.ReceiveMessageInput{        QueueUrl: &queueUrl,        MaxNumberOfMessages: maxMessages,        WaitTimeSeconds: 10,    })    if err != nil {        return nil, err    }    return msgResult, nil}func main() {    cfg, err := config.LoadDefaultConfig(context.TODO())    if err != nil {        log.Fatal("error")    }    queueName := "queue"    res, err := GetQueueURL(cfg, queueName)    if err != nil {        fmt.Printf("Got an error receiving url: %v", err)    }    FINDMESSAGE:        msgRes, err := GetMessages(cfg, *res.QueueUrl, maxMessages)        if err != nil {            fmt.Printf("Got an error while trying to retrieve messages: %v", err)        }        if len(msgRes.Messages) != 0 {            fmt.Println("Message Body: " + *msgRes.Messages[0].Body)            fmt.Println("Message Handle: " + *msgRes.Messages[0].ReceiptHandle)        }        fmt.Println("No Messages")    goto FINDMESSAGE}
查看完整描述

1 回答

?
小怪獸愛吃肉

TA貢獻1852條經(jīng)驗 獲得超1個贊

我最大的問題是這是否是對 GOTO 的錯誤使用,是否有更好的方法。


對 的任何使用goto都是對 的錯誤使用goto,除非您可以表達為什么使用 goto。你的例子是一個 for 循環(huán):


for {

        msgRes, err := GetMessages(cfg, *res.QueueUrl, maxMessages)

        if err != nil {

            fmt.Printf("Got an error while trying to retrieve messages: %v", err)

        }


        if len(msgRes.Messages) != 0 {

            fmt.Println("Message Body: " + *msgRes.Messages[0].Body)

            fmt.Println("Message Handle: " + *msgRes.Messages[0].ReceiptHandle)

        }


        fmt.Println("No Messages")

}


查看完整回答
反對 回復 2023-02-14
  • 1 回答
  • 0 關注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號