Bagikan melalui


Mulai cepat: Melemparkan pengecualian saat batas tingkat pengiriman email tercapai

Dalam mulai cepat ini, Anda akan mempelajari tentang cara melemparkan pengecualian ketika batas tingkat pengiriman email tercapai menggunakan SDK Email kami.

Melemparkan pengecualian saat batas tingkat pengiriman email tercapai

API Email memiliki pembatasan dengan batasan jumlah pesan email yang dapat Anda kirim. Email pengiriman memiliki batas yang diterapkan per menit dan per jam seperti yang disebutkan dalam Pembatasan api dan Batas Waktu. Ketika Anda telah mencapai batas ini, email berikutnya mengirim dengan SendAsync panggilan menerima respons kesalahan "429: Terlalu Banyak Permintaan". Secara default, SDK dikonfigurasi untuk mencoba kembali permintaan ini setelah menunggu periode waktu tertentu. Kami sarankan Anda menyiapkan pengelogan dengan Azure SDK untuk mengambil kode respons ini.

Atau, Anda dapat menentukan kebijakan kustom secara manual:

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

Tambahkan kebijakan ini ke klien email Anda untuk memastikan bahwa 429 kode respons memberikan pengecualian daripada dicoba ulang.

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

EmailClient emailClient = new EmailClient(connectionString, emailClientOptions);

Melemparkan pengecualian saat batas tingkat pengiriman email tercapai

API Email memiliki pembatasan dengan batasan jumlah pesan email yang dapat Anda kirim. Email pengiriman memiliki batas yang diterapkan per menit dan per jam seperti yang disebutkan dalam Pembatasan api dan Batas Waktu. Ketika Anda telah mencapai batas ini, email berikutnya mengirim dengan send panggilan menerima respons kesalahan "429: Terlalu Banyak Permintaan". Secara default, SDK dikonfigurasi untuk mencoba kembali permintaan ini setelah menunggu periode waktu tertentu. Kami sarankan Anda menyiapkan pengelogan dengan Azure SDK untuk mengambil kode respons ini.

Ada batas per menit dan per jam untuk jumlah email yang dapat Anda kirim menggunakan Azure Communication Email Service. Ketika Anda telah mencapai batas ini, panggilan lebih lanjut beginSend akan menerima 429: Too Many Requests respons. Secara default, SDK dikonfigurasi untuk mencoba kembali permintaan ini setelah menunggu periode waktu tertentu. Kami sarankan Anda menyiapkan pengelogan dengan Azure SDK untuk mengambil kode respons ini.

Atau, Anda dapat menentukan kebijakan kustom secara manual:

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

Tambahkan kebijakan ini ke klien email Anda untuk memastikan bahwa 429 kode respons memberikan pengecualian daripada dicoba ulang.

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

const emailClient = new EmailClient(connectionString, clientOptions);

Melemparkan pengecualian saat batas tingkat pengiriman email tercapai

API Email memiliki pembatasan dengan batasan jumlah pesan email yang dapat Anda kirim. Email pengiriman memiliki batas yang diterapkan per menit dan per jam seperti yang disebutkan dalam Pembatasan api dan Batas Waktu. Ketika Anda telah mencapai batas ini, email berikutnya mengirim dengan beginSend panggilan menerima respons kesalahan "429: Terlalu Banyak Permintaan". Secara default, SDK dikonfigurasi untuk mencoba kembali permintaan ini setelah menunggu periode waktu tertentu. Kami sarankan Anda menyiapkan pengelogan dengan Azure SDK untuk mengambil kode respons ini.

Atau, Anda dapat menentukan kebijakan kustom secara manual:

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

Tambahkan kebijakan coba lagi ini ke klien email Anda untuk memastikan bahwa 429 kode respons memberikan pengecualian daripada dicoba ulang.

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

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

Melemparkan pengecualian saat batas tingkat pengiriman email tercapai

API Email memiliki pembatasan dengan batasan jumlah pesan email yang dapat Anda kirim. Email pengiriman memiliki batas yang diterapkan per menit dan per jam seperti yang disebutkan dalam Pembatasan api dan Batas Waktu. Ketika Anda telah mencapai batas ini, email berikutnya mengirim dengan SendAsync panggilan menerima respons kesalahan "429: Terlalu Banyak Permintaan". Secara default, SDK dikonfigurasi untuk mencoba kembali permintaan ini setelah menunggu periode waktu tertentu. Kami sarankan Anda menyiapkan pengelogan dengan Azure SDK untuk mengambil kode respons ini.

Atau, Anda dapat menentukan kebijakan kustom secara manual untuk memastikan bahwa 429 kode respons memberikan pengecualian daripada dicoba ulang.

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)

Pemecahan Masalah

Pengiriman Email

Untuk memecahkan masalah yang terkait dengan pengiriman email, Anda bisa mendapatkan status pengiriman email untuk mengambil detail pengiriman.

Penting

Hasil keberhasilan yang dikembalikan oleh polling untuk status operasi pengiriman hanya memvalidasi fakta bahwa email telah berhasil dikirim untuk pengiriman. Untuk mendapatkan informasi tambahan tentang status pengiriman di ujung penerima, Anda harus mereferensikan cara menangani peristiwa email.

pembatasan Email

Jika Anda melihat bahwa aplikasi Anda menggantung itu bisa disebabkan oleh pengiriman email yang dibatasi. Anda dapat menangani ini melalui pengelogan atau dengan menerapkan kebijakan kustom.

Catatan

Penyiapan kotak pasir ini untuk membantu pengembang mulai membangun aplikasi. Anda dapat secara bertahap meminta untuk meningkatkan volume pengiriman setelah aplikasi siap untuk ditayangkan. Kirim permintaan dukungan untuk menaikkan batas pengiriman yang Anda inginkan jika Anda memerlukan pengiriman volume pesan yang melebihi batas tarif.

Membersihkan sumber daya Azure Communication Service

Jika ingin membersihkan dan menghapus langganan Azure Communication Services, Anda bisa menghapus sumber daya atau grup sumber daya. Menghapus grup sumber daya juga menghapus sumber daya apa pun yang terkait dengannya. Pelajari lebih lanjut cara membersihkan sumber daya.

Langkah berikutnya

Dalam mulai cepat ini, Anda mempelajari cara melakukan polling status secara manual saat mengirim email menggunakan Azure Communication Services.

Anda mungkin juga ingin: