如何在golang中启动与aws sqs的连接

时间:2018-04-21 07:44:51

标签: go microservices amazon-sqs

我正在golang中构建微服务应用程序,并且每个服务通过sqs与另一个服务进行通信,但是,当服务器启动时,我很难启动sqs连接,那么我如何启动sqs连接并使用它在我的服务中。使用go-kit构建服务所以我有一个名为service.go,main.go,endpoint.go和transport.go的文件。

基本上我有连接代码

creds := credentials.NewStaticCredentials(aws_access_key_id, aws_secret_access_key, token)
    cfg := aws.NewConfig().WithRegion("region").WithCredentials(creds)
    service := sqs.New(session.New(), cfg)
    qURL := "q_url"

    receive_params := &sqs.ReceiveMessageInput{
        QueueUrl:            aws.String(qURL),
        MaxNumberOfMessages: aws.Int64(1),
        VisibilityTimeout:   aws.Int64(30),
        WaitTimeSeconds:     aws.Int64(1),
    }
    receive_resp, err := service.ReceiveMessage(receive_params)
    if err != nil {
        log.Println(err)
    }
    fmt.Printf("[Receive message] \n%v \n\n", receive_resp)
    return true, nil

那么如何启动连接并开始在我的服务中获取消息。谢谢大家。

1 个答案:

答案 0 :(得分:0)

您的代码应检索邮件,但会指示它一次获取邮件。

如果应用需要同时运行其他内容,您需要像这样进入某个循环并且可能在另一个goroutine上运行它。

go func() {
  for {
    receive_resp, err := service.ReceiveMessage(receive_params)
    if err != nil {
      log.Println(err)
    }
    fmt.Printf("[Receive message] \n%v \n\n", receive_resp)
  }
}()

Reference on ReceiveMessage

Reference on Short vs Long polling