다음을 통해 공유


빠른 시작: 메일 보내기 계층 제한에 도달할 때 예외 throw

이 빠른 시작에서는 메일 SDK를 사용하여 메일 보내기 계층 제한에 도달할 때 예외를 throw하는 방법을 알아봅니다.

이메일 보내기 계층 제한에 도달하면 예외 throw

Email API는 보낼 수 있는 이메일 메시지 수가 제한되어 있습니다. 이메일 보내기 제한은 API 제한 및 시간 제한에 설명된 대로 분 단위 및 시간 단위로 적용됩니다. 이러한 제한에 도달하면 이후부터는 SendAsync를 호출하여 이메일을 보낼 때 "429: 너무 많은 요청"이라는 오류가 반환됩니다. 기본적으로 SDK는 일정 시간을 기다린 후 이러한 요청을 다시 시도하도록 구성됩니다. 이러한 응답 코드를 캡처하도록 Azure SDK를 사용하여 로깅을 설정하는 것이 좋습니다.

또는 수동으로 사용자 지정 정책을 정의할 수도 있습니다.

using Azure.Core.Pipeline;

public class Catch429Policy : HttpPipelineSynchronousPolicy
{
    public override void OnReceivedResponse(HttpMessage message)
    {
        if (message.Response.Status == 429)
        {
            throw new Exception(message.Response);
        }
        else
        {
            base.OnReceivedResponse(message);
        }
    }
}

429개의 응답 코드가 다시 시도되지 않고 예외를 throw하도록 메일 클라이언트에 이 정책을 추가합니다.

EmailClientOptions emailClientOptions = new EmailClientOptions();
emailClientOptions.AddPolicy(new Catch429Policy(), HttpPipelinePosition.PerRetry);

EmailClient emailClient = new EmailClient(connectionString, emailClientOptions);

이메일 보내기 계층 제한에 도달하면 예외 throw

Email API는 보낼 수 있는 이메일 메시지 수가 제한되어 있습니다. 이메일 보내기 제한은 API 제한 및 시간 제한에 설명된 대로 분 단위 및 시간 단위로 적용됩니다. 이러한 제한에 도달하면 이후부터는 send를 호출하여 이메일을 보낼 때 "429: 너무 많은 요청"이라는 오류가 반환됩니다. 기본적으로 SDK는 일정 시간을 기다린 후 이러한 요청을 다시 시도하도록 구성됩니다. 이러한 응답 코드를 캡처하도록 Azure SDK를 사용하여 로깅을 설정하는 것이 좋습니다.

Azure Communication Email Service를 사용하여 보낼 수 있는 이메일의 양은 분 단위 및 시간 단위로 제한됩니다. 이러한 제한에 도달하면 이후부터는 beginSend를 호출할 때 429: Too Many Requests 응답을 받게 됩니다. 기본적으로 SDK는 일정 시간을 기다린 후 이러한 요청을 다시 시도하도록 구성됩니다. 이러한 응답 코드를 캡처하도록 Azure SDK를 사용하여 로깅을 설정하는 것이 좋습니다.

또는 수동으로 사용자 지정 정책을 정의할 수도 있습니다.

const catch429Policy = {
  name: "catch429Policy",
  async sendRequest(request, next) {
    const response = await next(request);
    if (response.status === 429) {
      throw new Error(response);
    }
    return response;
  }
};

429개의 응답 코드가 다시 시도되지 않고 예외를 throw하도록 메일 클라이언트에 이 정책을 추가합니다.

const clientOptions = {
  additionalPolicies: [
    {
      policy: catch429Policy,
      position: "perRetry"
    }
  ]
}

const emailClient = new EmailClient(connectionString, clientOptions);

이메일 보내기 계층 제한에 도달하면 예외 throw

Email API는 보낼 수 있는 이메일 메시지 수가 제한되어 있습니다. 이메일 보내기 제한은 API 제한 및 시간 제한에 설명된 대로 분 단위 및 시간 단위로 적용됩니다. 이러한 제한에 도달하면 이후부터는 beginSend를 호출하여 이메일을 보낼 때 "429: 너무 많은 요청"이라는 오류가 반환됩니다. 기본적으로 SDK는 일정 시간을 기다린 후 이러한 요청을 다시 시도하도록 구성됩니다. 이러한 응답 코드를 캡처하도록 Azure SDK를 사용하여 로깅을 설정하는 것이 좋습니다.

또는 수동으로 사용자 지정 정책을 정의할 수도 있습니다.

import com.azure.core.http.HttpResponse;
import com.azure.core.http.policy.ExponentialBackoff;

public class CustomStrategy extends ExponentialBackoff {
    @Override
    public boolean shouldRetry(HttpResponse httpResponse) {
        int code = httpResponse.getStatusCode();

        if (code == HTTP_STATUS_TOO_MANY_REQUESTS) {
            throw new RuntimeException(httpResponse);
        }
        else {
            return super.shouldRetry(httpResponse);
        }
    }
}

429개의 응답 코드가 다시 시도되지 않고 예외를 throw하도록 메일 클라이언트에 이 다시 시도 정책을 추가합니다.

import com.azure.core.http.policy.RetryPolicy;

EmailClient emailClient = new EmailClientBuilder()
    .connectionString(connectionString)
    .retryPolicy(new RetryPolicy(new CustomStrategy()))
    .buildClient();

이메일 보내기 계층 제한에 도달하면 예외 throw

Email API는 보낼 수 있는 이메일 메시지 수가 제한되어 있습니다. 이메일 보내기 제한은 API 제한 및 시간 제한에 설명된 대로 분 단위 및 시간 단위로 적용됩니다. 이러한 제한에 도달하면 이후부터는 SendAsync를 호출하여 이메일을 보낼 때 "429: 너무 많은 요청"이라는 오류가 반환됩니다. 기본적으로 SDK는 일정 시간을 기다린 후 이러한 요청을 다시 시도하도록 구성됩니다. 이러한 응답 코드를 캡처하도록 Azure SDK를 사용하여 로깅을 설정하는 것이 좋습니다.

또는 429개의 응답 코드가 다시 시도되지 않고 예외를 throw하도록 사용자 지정 정책을 수동으로 정의할 수 있습니다.

def callback(response):
    if response.http_response.status_code == 429:
        raise Exception(response.http_response)

email_client = EmailClient.from_connection_string(<connection_string>, raw_response_hook=callback)

문제 해결

메일 배달

메일 배달과 관련된 문제를 해결하기 위해 메일 배달 상태를 확인하여 배달 세부 정보를 캡처할 수 있습니다.

Important

전송 작업 상태에 대한 폴링을 통해 반환된 성공 결과는 메일이 성공적으로 전송되었다는 팩트만 유효성 검사합니다. 수신자의 배달 상태에 대한 추가 정보를 가져오려면 메일 이벤트 처리 방법을 참조해야 합니다.

메일 제한

애플리케이션이 중단된 것으로 확인되면 이메일 보내기가 제한된 것일 수 있습니다. 로깅을 통해 또는 사용자 지정 정책을 구현하여 이 문제를 해결할 수 있습니다.

참고 항목

이 샌드박스 설정은 개발자가 애플리케이션 빌드를 시작하는 데 도움이 됩니다. 애플리케이션을 라이브로 전환할 준비가 되면 전송 볼륨을 늘리도록 점진적으로 요청할 수 있습니다. 속도 제한을 초과하는 메시지 볼륨을 보내야 하는 경우 원하는 전송 제한을 높이기 위해 지원 요청을 제출합니다.

Azure Communication Service 리소스 정리

Communication Services 구독을 정리하고 제거하려면 리소스 또는 리소스 그룹을 삭제하면 됩니다. 리소스 그룹을 삭제하면 해당 리소스 그룹에 연결된 다른 모든 리소스가 함께 삭제됩니다. 리소스 정리에 대해 자세히 알아보세요.

다음 단계

이 빠른 시작에서는 Azure Communication Services를 사용하여 메일을 보낼 때 상태를 수동으로 폴링하는 방법을 알아보았습니다.

다음을 수행할 수도 있습니다.