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