golang 学习之 向sqs发送消息

准备工作:

1.aws 账号
2.在aws的sqs上创建一个队列
3.申请支持sqs的IAM账号(具体流程这里不说了,百度很多),得到一个秘钥key和id。

步骤:

1.本地在windows下环境开发,在目录C:\Users\username.aws\ 下创建 credentials和config文件。

golang 学习之 向sqs发送消息

golang 学习之 向sqs发送消息

  1. 调用sdk代码

package main


import (
    "flag"
    "fmt"

    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/sqs"
)


func GetQueueURL(sess *session.Session, queue *string) (*sqs.GetQueueUrlOutput, error) {
    // Create an SQS service client
    svc := sqs.New(sess)

    result, err := svc.GetQueueUrl(&sqs.GetQueueUrlInput{
        QueueName: queue,
    })
    if err != nil {
        return nil, err
    }

    return result, nil
}


func SendMsg(sess *session.Session, queueURL *string) error {
    // Create an SQS service client
    // snippet-start:[sqs.go.send_message.call]
    svc := sqs.New(sess)

    _, err := svc.SendMessage(&sqs.SendMessageInput{
        // DelaySeconds: aws.Int64(10),
        MessageAttributes: map[string]*sqs.MessageAttributeValue{
            "Title": &sqs.MessageAttributeValue{
                DataType:    aws.String("String"),
                StringValue: aws.String("The Whistler"),
            },
            "Author": &sqs.MessageAttributeValue{
                DataType:    aws.String("String"),
                StringValue: aws.String("John Grisham"),
            },
            "WeeksOn": &sqs.MessageAttributeValue{
                DataType:    aws.String("Number"),
                StringValue: aws.String("6"),
            },
        },
        MessageBody:            aws.String("Information about current NY Times fiction bestseller for week of 12/11/2016."),
        QueueUrl:               queueURL,
        MessageGroupId:         aws.String("xxxx"),
        MessageDeduplicationId: aws.String("xxxx1"),
    })
    // snippet-end:[sqs.go.send_message.call]
    if err != nil {
        return err
    }

    return nil
}

func main() {
    // snippet-start:[sqs.go.send_message.args]
    queue := flag.String("q", "test.fifo", "The name of the queue")
    flag.Parse()

    if *queue == "" {
        fmt.Println("You must supply the name of a queue (-q QUEUE)")
        return
    }
    sess, err := session.NewSessionWithOptions(session.Options{
        SharedConfigState: session.SharedConfigEnable,
    })

    result, err := GetQueueURL(sess, queue)
    if err != nil {
        fmt.Println("Got an error getting the queue URL:")
        fmt.Println(err)
        return
    }

    queueURL := result.QueueUrl
    err = SendMsg(sess, queueURL)
    if err != nil {
        fmt.Println("Got an error sending the message:")
        fmt.Println(err)
        return
    }

    fmt.Println("Sent message to queue ")
}

  1. 测试, 成功。

golang 学习之 向sqs发送消息

资料出处:github.com/awsdocs/aws-doc-sdk-exa...

docs.aws.amazon.com/powershell/lat...

感触:

目前对golang理解的不深,一边看书一边找一些公司项目练手。做的过程中对一些函数比较陌生,卡点较多。 孰能生巧吧, 欢迎指点。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!