Szybki start: zgłaszanie wyjątku po osiągnięciu limitu warstwy wysyłania wiadomości e-mail
W tym przewodniku Szybki start dowiesz się, jak zgłosić wyjątek po osiągnięciu limitu warstwy wysyłania wiadomości e-mail przy użyciu naszych zestawów SDK Email.
Zgłaszanie wyjątku w przypadku osiągnięcia limitu warstwy wysyłania wiadomości e-mail
Interfejs API Email ogranicza ograniczenia liczby wiadomości e-mail, które można wysłać. Email wysyłanie ma zastosowane limity na minutę i godzinę, jak wspomniano w temacie Ograniczanie przepustowości interfejsu API i limity czasu. Po osiągnięciu tych limitów kolejne wiadomości e-mail wysyłane z wywołaniami SendAsync
otrzymują odpowiedź o błędzie "429: Zbyt wiele żądań". Domyślnie zestaw SDK jest skonfigurowany do ponawiania prób tych żądań po upływie określonego czasu. Zalecamy skonfigurowanie rejestrowania za pomocą zestawu Azure SDK w celu przechwycenia tych kodów odpowiedzi.
Alternatywnie można ręcznie zdefiniować zasady niestandardowe:
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);
}
}
}
Dodaj te zasady do klienta poczty e-mail, aby upewnić się, że kody odpowiedzi 429 zgłaszają wyjątek zamiast ponawiania próby.
EmailClientOptions emailClientOptions = new EmailClientOptions();
emailClientOptions.AddPolicy(new Catch429Policy(), HttpPipelinePosition.PerRetry);
EmailClient emailClient = new EmailClient(connectionString, emailClientOptions);
Zgłaszanie wyjątku w przypadku osiągnięcia limitu warstwy wysyłania wiadomości e-mail
Interfejs API Email ogranicza ograniczenia liczby wiadomości e-mail, które można wysłać. Email wysyłanie ma zastosowane limity na minutę i godzinę, jak wspomniano w temacie Ograniczanie przepustowości interfejsu API i limity czasu. Po osiągnięciu tych limitów kolejne wiadomości e-mail wysyłane z wywołaniami send
otrzymują odpowiedź o błędzie "429: Zbyt wiele żądań". Domyślnie zestaw SDK jest skonfigurowany do ponawiania prób tych żądań po upływie określonego czasu. Zalecamy skonfigurowanie rejestrowania za pomocą zestawu Azure SDK w celu przechwycenia tych kodów odpowiedzi.
Istnieją limity na minutę i godzinę dotyczące ilości wiadomości e-mail, które można wysyłać przy użyciu usługi Azure Communication Email Service. Po osiągnięciu tych limitów wszelkie kolejne beginSend
wywołania otrzymają 429: Too Many Requests
odpowiedź. Domyślnie zestaw SDK jest skonfigurowany do ponawiania prób tych żądań po upływie określonego czasu. Zalecamy skonfigurowanie rejestrowania za pomocą zestawu Azure SDK w celu przechwycenia tych kodów odpowiedzi.
Alternatywnie można ręcznie zdefiniować zasady niestandardowe:
const catch429Policy = {
name: "catch429Policy",
async sendRequest(request, next) {
const response = await next(request);
if (response.status === 429) {
throw new Error(response);
}
return response;
}
};
Dodaj te zasady do klienta poczty e-mail, aby upewnić się, że kody odpowiedzi 429 zgłaszają wyjątek zamiast ponawiania próby.
const clientOptions = {
additionalPolicies: [
{
policy: catch429Policy,
position: "perRetry"
}
]
}
const emailClient = new EmailClient(connectionString, clientOptions);
Zgłaszanie wyjątku w przypadku osiągnięcia limitu warstwy wysyłania wiadomości e-mail
Interfejs API Email ogranicza ograniczenia liczby wiadomości e-mail, które można wysłać. Email wysyłanie ma zastosowane limity na minutę i godzinę, jak wspomniano w temacie Ograniczanie przepustowości interfejsu API i limity czasu. Po osiągnięciu tych limitów kolejne wiadomości e-mail wysyłane z wywołaniami beginSend
otrzymują odpowiedź o błędzie "429: Zbyt wiele żądań". Domyślnie zestaw SDK jest skonfigurowany do ponawiania prób tych żądań po upływie określonego czasu. Zalecamy skonfigurowanie rejestrowania za pomocą zestawu Azure SDK w celu przechwycenia tych kodów odpowiedzi.
Alternatywnie można ręcznie zdefiniować zasady niestandardowe:
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);
}
}
}
Dodaj te zasady ponawiania do klienta poczty e-mail, aby upewnić się, że kody odpowiedzi 429 zgłaszają wyjątek zamiast ponawiania próby.
import com.azure.core.http.policy.RetryPolicy;
EmailClient emailClient = new EmailClientBuilder()
.connectionString(connectionString)
.retryPolicy(new RetryPolicy(new CustomStrategy()))
.buildClient();
Zgłaszanie wyjątku w przypadku osiągnięcia limitu warstwy wysyłania wiadomości e-mail
Interfejs API Email ogranicza ograniczenia liczby wiadomości e-mail, które można wysłać. Email wysyłanie ma zastosowane limity na minutę i godzinę, jak wspomniano w temacie Ograniczanie przepustowości interfejsu API i limity czasu. Po osiągnięciu tych limitów kolejne wiadomości e-mail wysyłane z wywołaniami SendAsync
otrzymują odpowiedź o błędzie "429: Zbyt wiele żądań". Domyślnie zestaw SDK jest skonfigurowany do ponawiania prób tych żądań po upływie określonego czasu. Zalecamy skonfigurowanie rejestrowania za pomocą zestawu Azure SDK w celu przechwycenia tych kodów odpowiedzi.
Alternatywnie można ręcznie zdefiniować zasady niestandardowe, aby upewnić się, że kody odpowiedzi 429 zgłaszają wyjątek zamiast ponawiania próby.
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)
Rozwiązywanie problemów
dostarczanie Email
Aby rozwiązać problemy związane z dostarczaniem wiadomości e-mail, możesz uzyskać stan dostarczania wiadomości e-mail w celu przechwycenia szczegółów dostawy.
Ważne
Wynik powodzenia zwrócony przez sondowanie stanu operacji wysyłania weryfikuje tylko fakt, że wiadomość e-mail została pomyślnie wysłana do dostarczenia. Aby uzyskać dodatkowe informacje na temat stanu dostawy na końcu odbiorcy, należy odwołać się do sposobu obsługi zdarzeń poczty e-mail.
ograniczanie Email
Jeśli widzisz, że aplikacja zawiesza się, może to być spowodowane ograniczaniem wysyłania wiadomości e-mail. Można to obsługiwać za pomocą rejestrowania lub implementując zasady niestandardowe.
Uwaga
Ta konfiguracja piaskownicy ułatwia deweloperom rozpoczęcie tworzenia aplikacji. Możesz stopniowo zażądać zwiększenia woluminu wysyłania, gdy aplikacja będzie gotowa do wygaśnięcia. Prześlij wniosek o pomoc techniczną, aby podnieść żądany limit wysyłania, jeśli potrzebujesz wysyłania woluminu komunikatów przekraczających limity szybkości.
Czyszczenie zasobów usługi Azure Communication Service
Jeśli chcesz wyczyścić i usunąć subskrypcję usług komunikacyjnych, możesz usunąć zasób lub grupę zasobów. Usunięcie grupy zasobów powoduje również usunięcie wszelkich innych skojarzonych z nią zasobów. Dowiedz się więcej o czyszczeniu zasobów.
Następne kroki
W tym przewodniku Szybki start przedstawiono sposób ręcznego sondowania stanu podczas wysyłania wiadomości e-mail przy użyciu Azure Communication Services.
Możesz również chcieć:
- Dowiedz się, jak wysyłać wiadomość e-mail do wielu adresatów
- Dowiedz się więcej o wysyłaniu wiadomości e-mail z załącznikami
- Zapoznaj się z biblioteką klienta poczty e-mail