Schnellstart: Auslösen einer Ausnahme, wenn der Grenzwert für das Senden von E-Mails erreicht wurde

In diesem Schnellstart erfahren Sie, wie Sie eine Ausnahme auslösen, wenn der Grenzwert für das Senden von E-Mails mit unseren Email SDKs erreicht wurde.

Auslösen einer Ausnahme, wenn der Grenzwert für das Senden von E-Mails erreicht ist

Die E-Mail-API drosselt die Anzahl der E-Mail-Nachrichten, die Sie senden können. Für das Senden von E-Mails gelten Grenzwerte pro Minute und Stunde, wie unter API-Drosselung und Timeouts erwähnt. Wenn Sie diese Grenzwerte erreicht haben, wird beim Versenden weitere E-Mails mit SendAsync-Aufrufen die Fehlermeldung „429: Too Many Requests“ (429: Zu viele Anforderungen) ausgegeben. Standardmäßig ist das SDK so konfiguriert, dass diese Anforderungen nach einem bestimmten Zeitraum erneut ausgeführt werden. Es wird empfohlen, die Protokollierung mit dem Azure SDK einzurichten, um diese Antwortcodes zu erfassen.

Alternativ können Sie manuell eine benutzerdefinierte Richtlinie definieren:

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

Fügen Sie diese Richtlinie Ihrem E-Mail-Client hinzu, um sicherzustellen, dass 429-Antwortcodes eine Ausnahme auslösen, anstatt wiederholt zu werden.

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

EmailClient emailClient = new EmailClient(connectionString, emailClientOptions);

Auslösen einer Ausnahme, wenn der Grenzwert für das Senden von E-Mails erreicht ist

Die E-Mail-API drosselt die Anzahl der E-Mail-Nachrichten, die Sie senden können. Für das Senden von E-Mails gelten Grenzwerte pro Minute und Stunde, wie unter API-Drosselung und Timeouts erwähnt. Wenn Sie diese Grenzwerte erreicht haben, wird beim Versenden weitere E-Mails mit send-Aufrufen die Fehlermeldung „429: Too Many Requests“ (429: Zu viele Anforderungen) ausgegeben. Standardmäßig ist das SDK so konfiguriert, dass diese Anforderungen nach einem bestimmten Zeitraum erneut ausgeführt werden. Es wird empfohlen, die Protokollierung mit dem Azure SDK einzurichten, um diese Antwortcodes zu erfassen.

Die Anzahl der E-Mails, die Sie mit Azure Communication Email Service senden können, ist minuten- und stundenweise begrenzt. Wenn Sie diese Grenzwerte erreicht haben, erhalten alle weiteren beginSend-Aufrufe die Antwort „429: Too Many Requests“. Standardmäßig ist das SDK so konfiguriert, dass diese Anforderungen nach einem bestimmten Zeitraum erneut ausgeführt werden. Es wird empfohlen, die Protokollierung mit dem Azure SDK einzurichten, um diese Antwortcodes zu erfassen.

Alternativ können Sie manuell eine benutzerdefinierte Richtlinie definieren:

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

Fügen Sie diese Richtlinie Ihrem E-Mail-Client hinzu, um sicherzustellen, dass 429-Antwortcodes eine Ausnahme auslösen, anstatt wiederholt zu werden.

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

const emailClient = new EmailClient(connectionString, clientOptions);

Auslösen einer Ausnahme, wenn der Grenzwert für das Senden von E-Mails erreicht ist

Die E-Mail-API drosselt die Anzahl der E-Mail-Nachrichten, die Sie senden können. Für das Senden von E-Mails gelten Grenzwerte pro Minute und Stunde, wie unter API-Drosselung und Timeouts erwähnt. Wenn Sie diese Grenzwerte erreicht haben, wird beim Versenden weitere E-Mails mit beginSend-Aufrufen die Fehlermeldung „429: Too Many Requests“ (429: Zu viele Anforderungen) ausgegeben. Standardmäßig ist das SDK so konfiguriert, dass diese Anforderungen nach einem bestimmten Zeitraum erneut ausgeführt werden. Es wird empfohlen, die Protokollierung mit dem Azure SDK einzurichten, um diese Antwortcodes zu erfassen.

Alternativ können Sie manuell eine benutzerdefinierte Richtlinie definieren:

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

Fügen Sie diese Wiederholungsrichtlinie Ihrem E-Mail-Client hinzu, um sicherzustellen, dass 429-Antwortcodes eine Ausnahme auslösen, anstatt wiederholt zu werden.

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

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

Auslösen einer Ausnahme, wenn der Grenzwert für das Senden von E-Mails erreicht ist

Die E-Mail-API drosselt die Anzahl der E-Mail-Nachrichten, die Sie senden können. Für das Senden von E-Mails gelten Grenzwerte pro Minute und Stunde, wie unter API-Drosselung und Timeouts erwähnt. Wenn Sie diese Grenzwerte erreicht haben, wird beim Versenden weitere E-Mails mit SendAsync-Aufrufen die Fehlermeldung „429: Too Many Requests“ (429: Zu viele Anforderungen) ausgegeben. Standardmäßig ist das SDK so konfiguriert, dass diese Anforderungen nach einem bestimmten Zeitraum erneut ausgeführt werden. Es wird empfohlen, die Protokollierung mit dem Azure SDK einzurichten, um diese Antwortcodes zu erfassen.

Alternativ können Sie manuell eine benutzerdefinierte Richtlinie definieren, um sicherzustellen, dass 429-Antwortcodes eine Ausnahme auslösen, anstatt wiederholt zu werden.

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)

Problembehandlung

E-Mail-Zustellung

Zur Behebung von Problemen im Zusammenhang mit der E-Mail-Zustellung können Sie den Status der E-Mail-Zustellung abrufen, um Zustellungsdetails zu erfassen.

Wichtig

Das Erfolgsergebnis, das durch Abfragen des Sendestatus zurückgegeben wird, beweist nur, dass die E-Mail erfolgreich zur Zustellung gesendet wurde. Um zusätzliche Informationen über den Zustellungsstatus am Empfängerende zu erhalten, müssen Sie Behandlung von E-Mail-Ereignissen lesen.

E-mail-Drosselung

Wenn Sie sehen, dass Ihre Anwendung hängt, kann dies darauf zurückzuführen sein, dass das Senden von E-Mails gedrosselt wurde. Sie können dies über die Protokollierung oder die Implementierung einer benutzerdefinierten Richtlinie beheben.

Hinweis

Dieses Sandboxsetup hilft Entwicklern beim Erstellen der Anwendung. Sie können eine schrittweise Erhöhung des Sendevolumens anfordern, sobald die Anwendung einsatzbereit ist. Übermitteln Sie eine Supportanfrage, um das von Ihnen gewünschte Sendelimit zu erhöhen, wenn Sie ein Nachrichtenvolumen senden müssen, das die Ratenbegrenzungen überschreitet.

Bereinigen von Azure Communication Service-Ressourcen

Wenn Sie ein Communication Services-Abonnement bereinigen und entfernen möchten, können Sie die Ressource oder die Ressourcengruppe löschen. Wenn Sie die Ressourcengruppe löschen, werden auch alle anderen Ressourcen gelöscht, die ihr zugeordnet sind. Weitere Informationen zum Bereinigen von Ressourcen finden Sie hier.

Nächste Schritte

In diesem Schnellstart haben Sie erfahren, wie Sie den Sendestatus von E-Mails mithilfe von Azure Communication Services manuell abfragen.

Das könnte Sie auch interessieren: