GoでAWS SQSからメッセージを取得しようとしています。
sqs.go
1type SQSManager struct { 2 Svc *sqs.SQS 3 QueueUrl string 4 QueueName string 5 WaitTimeSeconds int64 6} 7func New(QueueUrl, QueueName string, WaitTimeSeconds int) *SQSManager { 8 sqsClient := &SQSManager{&sqs.SQS{}, QueueUrl, QueueName, int64(WaitTimeSeconds)} 9 return sqsClient 10} 11func (m *SQSManager) RetrieveMessage() ([]*sqs.Message, error) { 12 13 input := &sqs.ReceiveMessageInput{ 14 QueueUrl: aws.String(m.GetQueueUrl()), 15 MaxNumberOfMessages: aws.Int64(10), 16 WaitTimeSeconds: aws.Int64(m.WaitTimeSeconds), 17 } 18 19 fmt.Println(input) 20 resp, err := m.Svc.ReceiveMessage(input) 21 22 if err != nil { 23 return nil, err 24 } 25 26 return resp.Messages, nil 27}
mainから呼び出します
mail.go
1func main() { 2 cfg := config.InitEnvironment() 3 sqsClient := sqs.New(cfg.SQS.URL, cfg.SQS.NAME, 30) 4 msg, err := sqsClient.RetrieveMessage() 5 if err != nil { 6 fmt.Println(err) 7 } 8 fmt.Println(msg) 9}
上記の内容で下記のエラーが出てしまいます。下記の内容からnilに対してデータを入れようとしていると思っているのですが具体的にどこを直せばよいのかが分からず、教えていただければと思います。
なおSQSにはデータが入っていることを確認しています。
mail_sender | panic: runtime error: invalid memory address or nil pointer dereference
mail_sender | { mail_sender | MaxNumberOfMessages: 10, mail_sender | QueueUrl: "http://localhost:4566/000000000000/send-message-queue", mail_sender | WaitTimeSeconds: 30 mail_sender | } mail_sender | panic: runtime error: invalid memory address or nil pointer dereference mail_sender | [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x220964] mail_sender | mail_sender | goroutine 1 [running]: mail_sender | github.com/aws/aws-sdk-go/aws/client.(*Client).NewRequest(...) mail_sender | /go/pkg/mod/github.com/aws/aws-sdk-go@v1.44.144/aws/client/client.go:86 mail_sender | github.com/aws/aws-sdk-go/service/sqs.(*SQS).newRequest(0x400019fd38?, 0xb4198?, {0x26b440?, 0x40000942a0?}, {0x2540e0?, 0x40000b42a0?}) mail_sender | /go/pkg/mod/github.com/aws/aws-sdk-go@v1.44.144/service/sqs/service.go:96 +0x34 mail_sender | github.com/aws/aws-sdk-go/service/sqs.(*SQS).ReceiveMessageRequest(0x7a?, 0x40000942a0) mail_sender | /go/pkg/mod/github.com/aws/aws-sdk-go@v1.44.144/service/sqs/api.go:1457 +0xc0 mail_sender | github.com/aws/aws-sdk-go/service/sqs.(*SQS).ReceiveMessage(0x47bb68?, 0x40000b6008?) mail_sender | /go/pkg/mod/github.com/aws/aws-sdk-go@v1.44.144/service/sqs/api.go:1527 +0x1c mail_sender | datadriven/src/infra/sqs.(*SQSManager).RetrieveMessage(0x400019fea8) mail_sender | /go/src/src/infra/sqs/sqs.go:52 +0x1a4 mail_sender | main.main() mail_sender | /go/src/main.go:14 +0xf8 mail_sender | exit status 2 mail_sender exited with code 1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。