Kubernetes 上的事件方格 - 事件傳遞及重試

Kubernetes 上包含 Azure Arc 的事件方格會立即嘗試為每個相符的訂用帳戶傳遞每個訊息至少一次。 如果無法從訂閱者取得成功的 HTTP 200 回應,或如果發生任何失敗,Kubernetes 上的事件方格會根據固定的重試排程和重試原則來重試傳遞。

根據預設,Kubernetes 上的事件方格會一次將一個事件傳遞給訂閱者。 不過,傳遞要求的承載是包含單一事件的陣列。 如果您啟用輸出批次處理功能,則一次可以傳遞多個事件。 如需此功能的詳細資料,請參閱批次事件傳遞

重要

具有 Azure Arc 的 Kubernetes 上的事件方格目前處於公開預覽狀態。 此預覽版本是在沒有服務等級協定的情況下提供,不建議用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

注意

在預覽期間,可透過 API 2020-10-15-Preview 版支援 Kubernetes 功能上的事件方格。

重試排程

Kubernetes 上的事件方格在傳遞事件之後,最多會等候 60 秒以取得回應。 如果訂閱者的端點未傳送成功回應 (HTTP 200 等),則會重試傳送事件。 其運作方式如下。

  1. 訊息會抵達 Kubernetes 上的事件方格。 立即嘗試傳遞。
  2. 如果傳遞失敗,則訊息會加入 1 分鐘的佇列,並在一分鐘後重試。
  3. 如果傳遞持續失敗,則訊息會加入 10 分鐘的佇列,並每隔 10 分鐘重試一次。
  4. 系統會嘗試傳遞,直到達到成功或重試原則限制為止。

重試原則

有兩種設定可決定重試原則。 畫面如下:

  • 重試次數上限
  • 事件存留時間 (TTL)

如果達到重試原則的任一限制,就會捨棄事件。 這些限制會根據每個訂用帳戶進行設定。 下一節將進一步詳細說明每一個限制。

為每個訂閱者設定預設值

您也可以為每個訂用帳戶指定重試原則限制。 如需每個訂閱者設定預設值的相關資訊,請參閱我們的 API 文件。 訂用帳戶層級預設值會覆寫 Kubernetes 層級設定上的事件方格模組。

下列範例會將 maxNumberOfAttempts 的 Webhook 訂用帳戶設定為 3 分鐘,以及 eventTimeToLiveInMinutes 的 Webhook 訂用帳戶設定為 30 分鐘。

{
 "properties": {
  "destination": {
   "endpointType": "WebHook",
   "properties": {
    "endpointUrl": "<your_webhook_url>",
    "eventDeliverySchema": " CloudEventSchemaV1_0"
   }
  },
  "retryPolicy": {
   "eventTimeToLiveInMinutes": 30,
   "maxDeliveryAttempts": 3
  }
 }

下一步

若要了解適用於 Kubernetes 的 Azure Arc 事件方格所支援的目的地和處理常式,請參閱 Kubernetes 上的事件方格 - 事件處理常式