オープンソース プログラミング言語として、Go 言語の人気が高まっています。 Go 言語は効率的な同時実行性と軽量な構文を備えているため、アプリケーション開発に Go 言語の使用を選択する開発者が増えています。 AWS SQS (略して SQS) は、アマゾン ウェブ サービス (AWS) が提供するフルマネージドのメッセージ キュー サービスで、分散アプリケーションのメッセージング ソリューションに使用できます。この記事では、Go 言語で AWS SQS を使用する方法を詳しく説明し、いくつかのコード例とベストプラクティスを示します。
AWS SQS の使用を開始する前に、次の準備を完了する必要があります。
1.1 AWS で SQS キューを作成する
AWS での新しい SQS キューの作成は非常に簡単です。 AWS マネジメント コンソールにログインし、SQS コンソールに移動し、プロンプトに従って新しいキューを作成するだけです。キューを作成するときは、キューの名前とその他の設定を指定します。たとえば、キューのアクセス ポリシー、トランスポート プロトコル、待ち時間などを選択できます。
1.2 aws-sdk-go のインストールと設定
aws-sdk-go は、AWS が公式に提供する Go 言語 SDK で、AWS サービスの API と対話するために必要なすべての機能を提供します。 。 aws-sdk-go のインストールは非常に簡単です。ターミナル ウィンドウで次のコマンドを実行するだけです:
go get github.com/aws/aws-sdk-go/aws
インストールが完了したら、SDK が AWS リソースにアクセスできるように AWS 認証情報を設定する必要があります。 。 AWS IAM ユーザーまたはロールを使用し、適切なアクセス許可を関連付けることをお勧めします。次に、次のコマンドを使用して Go コードで AWS 認証情報を構成できます:
sess, err := session.NewSession(&aws.Config{ Region: aws.String("us-east-1"), Credentials: credentials.NewStaticCredentials("AKID", "SECRET", ""), })
この例では、「AKID」と「SECRET」が AWS 認証情報です。必ずこれを自分の認証情報に置き換えてください。
準備作業が完了したら、Go 言語で AWS SQS の使用を開始できるようになります。 AWS SQS を使用した一般的なユースケースの例をいくつか示します。
2.1 キューのプロパティの設定
AWS SQS を使用する場合、キューのプロパティを設定してその動作を構成する必要があります。たとえば、キューのメッセージ表示タイムアウト、デフォルトの遅延、キュー サイズ制限などを設定できます。 Go でキュー プロパティを設定する方法のサンプル コードを次に示します。
svc := sqs.New(sess) queueURL := "YOUR_QUEUE_URL" params := &sqs.SetQueueAttributesInput{ Attributes: map[string]*string{ "VisibilityTimeout": aws.String("3600"), "DelaySeconds": aws.String("10"), "MaximumMessageSize": aws.String("2048"), }, QueueUrl: &queueURL, } _, err := svc.SetQueueAttributes(params) if err != nil { fmt.Println("Error", err) return } fmt.Println("Success")
この例では、「YOUR_QUEUE_URL」は SQS キュー URL です。これを独自のキュー URL に置き換える必要があります。
2.2 キューへのメッセージの送信
AWS SQS キューにメッセージを送信するには、新しいメッセージを作成してキューに送信する必要があります。 Go 言語で AWS SQS キューにメッセージを送信する方法のサンプル コードを次に示します。
svc := sqs.New(sess) queueURL := "YOUR_QUEUE_URL" params := &sqs.SendMessageInput{ MessageBody: aws.String("Hello world!"), QueueUrl: &queueURL, } resp, err := svc.SendMessage(params) if err != nil { fmt.Println("Error", err) return } fmt.Println("Success", *resp.MessageId)
この例では、「Hello world!」が送信されるメッセージ本文です。独自のメッセージ本文に置き換えることができます。
2.3 キューからのメッセージの受信
AWS SQS キューからメッセージを受信するには、ロングポーリングメカニズムを使用し、定期的にキューをチェックして新しいメッセージが利用可能かどうかを確認する必要があります。以下は、Go 言語でメッセージを受信する方法のサンプル コードです。
svc := sqs.New(sess) queueURL := "YOUR_QUEUE_URL" for { params := &sqs.ReceiveMessageInput{ QueueUrl: &queueURL, MaxNumberOfMessages: aws.Int64(1), WaitTimeSeconds: aws.Int64(20), } resp, err := svc.ReceiveMessage(params) if err != nil { fmt.Println("Error", err) return } for _, msg := range resp.Messages { fmt.Println("Received message:", *msg.Body) deleteParams := &sqs.DeleteMessageInput{ QueueUrl: &queueURL, ReceiptHandle: msg.ReceiptHandle, } _, err := svc.DeleteMessage(deleteParams) if err != nil { fmt.Println("Error", err) return } } time.Sleep(5 * time.Second) }
この例では、ロング ポーリング メカニズムを使用し、ループを使用してキューを定期的にチェックしました。新しいメッセージがキューで利用可能になると、それを受信し、メッセージ本文をコンソールに出力します。次に、メッセージの ReceiptHandle を使用して、キューからメッセージを削除します。メッセージ受信時の待ち時間を指定する必要があることに注意してください。この例では、待機時間を 20 秒に設定します。
AWS SQS を使用する場合は、必ず次のベストプラクティスに従ってください:
以上がGo での AWS SQS の使用: 完全ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。