Поделиться через


Краткое руководство. Создание исключения при достижении предельного уровня отправки электронной почты

В этом кратком руководстве вы узнаете, как создавать исключение при достижении предельного уровня отправки электронной почты с помощью наших пакетов SDK для Email.

Создание исключения при достижении предельного уровня отправки электронной почты

API Email имеет регулирование с ограничениями на количество сообщений электронной почты, которые можно отправлять. Email отправки применяются ограничения в минуту и час, как описано в разделе Регулирование и время ожидания 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 порождали исключение, а не повторялись.

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

EmailClient emailClient = new EmailClient(connectionString, emailClientOptions);

Создание исключения при достижении предельного уровня отправки электронной почты

API Email имеет регулирование с ограничениями на количество сообщений электронной почты, которые можно отправлять. Email отправки применяются ограничения в минуту и час, как описано в разделе Регулирование и время ожидания API. После достижения этих ограничений последующие сообщения электронной почты с send вызовами получают ответ об ошибке "429: слишком много запросов". По умолчанию пакет SDK настроен для повторных попыток выполнения этих запросов после ожидания определенного периода времени. Мы рекомендуем настроить ведение журнала с помощью пакета AZURE SDK для записи этих кодов ответов.

Количество сообщений электронной почты, отправляемых с помощью Службы Email связи Azure, ограничено по минутам и часам. Когда вы достигнете этих ограничений, все последующие 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 порождали исключение, а не повторялись.

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

const emailClient = new EmailClient(connectionString, clientOptions);

Создание исключения при достижении предельного уровня отправки электронной почты

API Email имеет регулирование с ограничениями на количество сообщений электронной почты, которые можно отправлять. Email отправки применяются ограничения в минуту и час, как описано в разделе Регулирование и время ожидания 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 не повторялись.

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

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

Создание исключения при достижении предельного уровня отправки электронной почты

API Email имеет регулирование с ограничениями на количество сообщений электронной почты, которые можно отправлять. Email отправки применяются ограничения в минуту и час, как описано в разделе Регулирование и время ожидания API. После достижения этих ограничений последующие сообщения электронной почты с SendAsync вызовами получают ответ об ошибке "429: слишком много запросов". По умолчанию пакет SDK настроен для повторных попыток выполнения этих запросов после ожидания определенного периода времени. Мы рекомендуем настроить ведение журнала с помощью пакета AZURE SDK для записи этих кодов ответов.

Кроме того, можно вручную определить настраиваемую политику, чтобы коды ответов 429 порождали исключение, а не повторялись.

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)

Устранение неполадок

Доставка Email

Чтобы устранить неполадки, связанные с доставкой электронной почты, можно получить состояние доставки электронной почты для сбора сведений о доставке.

Важно!

Результат успешного выполнения, возвращаемый опросом состояния операции отправки, подтверждает только тот факт, что сообщение электронной почты успешно отправлено для доставки. Чтобы получить дополнительные сведения о состоянии доставки на стороне получателя, необходимо указать, как обрабатывать события электронной почты.

Регулирование Email

Если вы видите, что приложение зависает, это может быть связано с регулированием отправки электронной почты. Это можно сделать с помощью ведения журнала или реализации настраиваемой политики.

Примечание

Эта настройка песочницы поможет разработчикам приступить к созданию приложения. Вы можете постепенно запросить увеличение объема отправки после того, как приложение будет готово к работе. Отправьте запрос в службу поддержки, чтобы увеличить требуемое ограничение на отправку, если требуется отправить объем сообщений, превышающий ограничения скорости.

Очистка ресурсов Службы коммуникации Azure

Если вы хотите очистить и удалить подписку на Службы коммуникации, вы можете удалить ресурс или группу ресурсов. При этом удаляются все ресурсы, связанные с ней. См. сведения об очистке ресурсов.

Дальнейшие действия

В этом кратком руководстве вы узнали, как вручную опрашивать состояние при отправке электронной почты с помощью Службы коммуникации Azure.

Полезные ссылки