我正在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
那么如何启动连接并开始在我的服务中获取消息。谢谢大家。
答案 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)
}
}()