Compartilhar via


Início Rápido: Lance uma exceção quando o limite de níveis de envio de email for atingido

Neste início rápido, você aprenderá a gerar uma exceção quando o limite da camada de envio de email for atingido usando nossos SDKs de Email.

Lance uma exceção quando o limite de níveis de envio de email for atingido

A API de Email tem limitações no número de mensagens de email que você pode enviar. O envio de email tem limites aplicados por minuto e hora, conforme mencionado em Limitação de API e Tempos Limite. Quando você atingir esses limites, os emails seguintes enviados com chamadas SendAsync recebem uma resposta de erro “429: Muitas solicitações”. Por padrão, o SDK é configurado para repetir essas solicitações após aguardar um determinado período. Recomendamos que você configure o registro em log com o SDK do Azure para capturar esses códigos de resposta.

Como alternativa, você poderá definir manualmente uma política personalizada:

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);
        }
    }
}

Adicione essa política ao cliente de email para garantir que os códigos de resposta 429 gerem uma exceção em vez de serem repetidos.

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

EmailClient emailClient = new EmailClient(connectionString, emailClientOptions);

Lance uma exceção quando o limite de níveis de envio de email for atingido

A API de Email tem limitações no número de mensagens de email que você pode enviar. O envio de email tem limites aplicados por minuto e hora, conforme mencionado em Limitação de API e Tempos Limite. Quando você atingir esses limites, os emails seguintes enviados com chamadas send recebem uma resposta de erro “429: Muitas solicitações”. Por padrão, o SDK é configurado para repetir essas solicitações após aguardar um determinado período. Recomendamos que você configure o registro em log com o SDK do Azure para capturar esses códigos de resposta.

Há limites por minuto e por hora para a quantidade de emails que você pode enviar usando o Serviço de Email de Comunicação do Azure. Quando você atingir esses limites, quaisquer outras chamadas beginSend recebem uma resposta 429: Too Many Requests. Por padrão, o SDK é configurado para repetir essas solicitações após aguardar um determinado período. Recomendamos que você configure o registro em log com o SDK do Azure para capturar esses códigos de resposta.

Como alternativa, você poderá definir manualmente uma política personalizada:

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

Adicione essa política ao cliente de email para garantir que os códigos de resposta 429 gerem uma exceção em vez de serem repetidos.

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

const emailClient = new EmailClient(connectionString, clientOptions);

Lance uma exceção quando o limite de níveis de envio de email for atingido

A API de Email tem limitações no número de mensagens de email que você pode enviar. O envio de email tem limites aplicados por minuto e hora, conforme mencionado em Limitação de API e Tempos Limite. Quando você atingir esses limites, os emails seguintes enviados com chamadas beginSend recebem uma resposta de erro “429: Muitas solicitações”. Por padrão, o SDK é configurado para repetir essas solicitações após aguardar um determinado período. Recomendamos que você configure o registro em log com o SDK do Azure para capturar esses códigos de resposta.

Como alternativa, você poderá definir manualmente uma política personalizada:

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);
        }
    }
}

Adicione essa política de repetição ao cliente de email para garantir que 429 códigos de resposta gerem uma exceção em vez de serem repetidos.

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

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

Lance uma exceção quando o limite de níveis de envio de email for atingido

A API de Email tem limitações no número de mensagens de email que você pode enviar. O envio de email tem limites aplicados por minuto e hora, conforme mencionado em Limitação de API e Tempos Limite. Quando você atingir esses limites, os emails seguintes enviados com chamadas SendAsync recebem uma resposta de erro “429: Muitas solicitações”. Por padrão, o SDK é configurado para repetir essas solicitações após aguardar um determinado período. Recomendamos que você configure o registro em log com o SDK do Azure para capturar esses códigos de resposta.

Como alternativa, você pode definir manualmente uma política personalizada para garantir que 429 códigos de resposta gerem uma exceção em vez de serem repetidos.

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)

Solução de problemas

Entrega de Emails

Para solucionar problemas relacionados à entrega de emails, você pode obter o status da entrega do email para capturar os detalhes da entrega.

Importante

O resultado de êxito retornado pela sondagem para o status da operação de envio só valida o fato de que o email foi enviado com êxito para entrega. Para obter informações adicionais sobre o status da entrega no destinatário final, você precisará consultar como lidar com eventos de email.

Limitação de Emails

Se você vir que seu aplicativo está travando, pode ser devido à limitação de envio de emails. Você pode lidar com isso através do registro em log ou implementando uma política personalizada.

Observação

Essa configuração de área restrita é para ajudar os desenvolvedores a começar a criar o aplicativo. Você pode solicitar gradualmente para aumentar o volume de envio quando o aplicativo estiver pronto para entrar em operação. Envie uma solicitação de suporte para aumentar o limite de envio desejado se você precisar enviar um volume de mensagens que exceda os limites de taxa.

Limpar recursos do Serviço de Comunicação do Azure

Se quiser limpar e remover uma assinatura dos Serviços de Comunicação, exclua o recurso ou o grupo de recursos. Excluir o grupo de recursos também exclui todos os recursos associados a ele. Saiba mais sobre como limpar recursos.

Próximas etapas

Neste início rápido, você aprendeu a pesquisar manualmente o status ao enviar emails usando os Serviços de Comunicação do Azure.

Você também pode querer: