ホームページ  >  記事  >  バックエンド開発  >  Go での AWS SQS の使用: 完全ガイド

Go での AWS SQS の使用: 完全ガイド

王林
王林オリジナル
2023-06-17 21:50:491385ブラウズ

オープンソース プログラミング言語として、Go 言語の人気が高まっています。 Go 言語は効率的な同時実行性と軽量な構文を備えているため、アプリケーション開発に Go 言語の使用を選択する開発者が増えています。 AWS SQS (略して SQS) は、アマゾン ウェブ サービス (AWS) が提供するフルマネージドのメッセージ キュー サービスで、分散アプリケーションのメッセージング ソリューションに使用できます。この記事では、Go 言語で AWS SQS を使用する方法を詳しく説明し、いくつかのコード例とベストプラクティスを示します。

  1. 準備

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 認証情報です。必ずこれを自分の認証情報に置き換えてください。

  1. Go での AWS SQS の使用

準備作業が完了したら、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 秒に設定します。

  1. ベストプラクティス

AWS SQS を使用する場合は、必ず次のベストプラクティスに従ってください:

  • メッセージのサイズを最小限に抑えます。各メッセージには 256K のサイズ制限があるため、メッセージのサイズをできるだけ小さくする必要があります。
  • ロングポーリングメカニズムを使用します。ロングポーリングメカニズムにより、AWS SQS 呼び出しの数が減り、アプリケーションの応答速度が向上します。
  • キューを定期的にクリアします。キューをクリーンアップすると、期限切れのメッセージや無駄なメッセージを回避できます。
    #結論
この記事では、Go 言語で AWS SQS を使用するための完全なガイドを紹介します。この記事を読めば、キューのプロパティの設定、メッセージの送信、メッセージの受信、ベスト プラクティスに従う方法を理解できるはずです。 AWS SQS は、スケーラブルで信頼性の高い分散アプリケーションの構築に使用できる強力なメッセージ キュー サービスです。次の Go プロジェクトでは、AWS SQS を使用してメッセージングを処理することを検討する必要があります。

以上がGo での AWS SQS の使用: 完全ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。