golang 学习之 向sqs发送消息
准备工作:
1.aws 账号
2.在aws的sqs上创建一个队列
3.申请支持sqs的IAM账号(具体流程这里不说了,百度很多),得到一个秘钥key和id。
步骤:
1.本地在windows下环境开发,在目录C:\Users\username.aws\ 下创建 credentials和config文件。
- 调用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 ")
}
- 测试, 成功。
资料出处:github.com/awsdocs/aws-doc-sdk-exa...
docs.aws.amazon.com/powershell/lat...
感触:
目前对golang理解的不深,一边看书一边找一些公司项目练手。做的过程中对一些函数比较陌生,卡点较多。 孰能生巧吧, 欢迎指点。
本作品采用《CC 协议》,转载必须注明作者和本文链接