>백엔드 개발 >Golang >Go에서 AWS SQS 사용: 전체 안내서

Go에서 AWS SQS 사용: 전체 안내서

王林
王林원래의
2023-06-17 21:50:491440검색

오픈소스 프로그래밍 언어로서 Go 언어의 인기가 높아지고 있습니다. 효율적인 동시성과 가벼운 구문을 갖추고 있으므로 점점 더 많은 개발자가 애플리케이션 개발에 Go 언어를 사용하도록 선택합니다. AWS SQS(줄여서 SQS)는 분산 애플리케이션의 메시징 솔루션에 사용할 수 있는 Amazon Web Services(AWS)에서 제공하는 완전관리형 메시지 대기열 서비스입니다. 이 문서에서는 Go 언어로 AWS SQS를 사용하는 방법을 자세히 설명하고 몇 가지 코드 예제와 모범 사례를 제공합니다.

  1. 준비

AWS SQS 사용을 시작하기 전에 다음 준비를 완료해야 합니다.

1.1 AWS에서 SQS 대기열 생성

AWS에서 새 SQS 대기열을 생성하는 것은 매우 간단합니다. AWS Management Console에 로그인하고 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 호출 수를 줄이고 애플리케이션 응답 속도를 향상시킬 수 있습니다.
  • 정기적으로 대기열을 삭제하세요. 대기열을 정리하면 만료되거나 쓸모 없는 메시지를 방지하는 데 도움이 됩니다.
  1. 결론

이 문서에서는 Go 언어로 AWS SQS를 사용하는 방법에 대한 전체 가이드를 제공합니다. 이 문서에서는 큐 속성을 설정하고, 메시지를 보내고, 메시지를 받고, 모범 사례를 따르는 방법을 알아야 합니다. AWS SQS는 확장 가능하고 안정적인 분산 애플리케이션을 구축하는 데 사용할 수 있는 강력한 메시지 대기열 서비스입니다. 다음 Go 프로젝트에서는 AWS SQS를 사용하여 메시징을 처리하는 것을 고려해야 합니다.

위 내용은 Go에서 AWS SQS 사용: 전체 안내서의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.