跳至內容

序列

序列 CRD 提供定義將被調用的函數依序列表的方法。每個步驟都可以修改、篩選或建立新的事件類型。序列會在底層建立 ChannelSubscription

資訊

序列需要「髮夾彎」流量。請驗證您的 Pod 可以透過服務 IP 連線到自身。如果「髮夾彎」流量不可用,您可以聯絡您的叢集管理員,因為這是叢集層級(通常是 CNI)設定。

用法

序列規格

序列的規格有三個部分

  1. Steps 定義 Subscriber 的依序列表,也就是以列出的順序執行的函數。這些是使用 messaging.v1.SubscriberSpec 指定的,就像您在建立 Subscription 時一樣。每個步驟都應為 Addressable
  2. ChannelTemplate 定義將用於在步驟之間建立 Channel 的範本。
  3. Reply (可選) 參考序列中最後一個步驟的結果傳送到的位置。

序列狀態

序列的狀態有四個部分

  1. 條件,詳細說明序列物件的整體狀態
  2. ChannelStatuses,傳達作為此序列一部分建立的基礎 Channel 資源的狀態。它是一個陣列,每個狀態都對應於步驟編號,因此陣列中的第一個條目是第一個步驟之前的 Channel 狀態。
  3. SubscriptionStatuses,傳達作為此序列一部分建立的基礎 Subscription 資源的狀態。它是一個陣列,每個狀態都對應於步驟編號,因此陣列中的第一個條目是建立來將第一個通道連接到 Steps 陣列中第一個步驟的 Subscription
  4. AddressStatus,它被公開,以便可以使用 Addressable 的地方可以使用序列。傳送到此位址將會以序列中第一個步驟前面的 Channel 作為目標。

範例

對於以下每個範例,您都使用 PingSource 作為事件的來源。

我們還使用一個非常簡單的 轉換器,它對傳入事件執行非常簡單的轉換,以示範它們已通過每個階段。

沒有回覆的序列

在第一個範例中,我們將使用一個直接連接到 PingSource 的 3 步驟 Sequence。每個步驟只是簡單地附加 "- Handled by",例如,Sequence 中的第一個步驟會將傳入訊息附加 "- Handled by 0" 到傳入訊息。

請參閱 沒有回覆的序列 (最後一個步驟為終端)

有回覆的序列

在下一個範例中,我們將使用相同的直接連接到 PingSource 的 3 步驟 Sequence。每個步驟只是簡單地附加 "- Handled by",例如,Sequence 中的第一個步驟會將傳入訊息附加 "- Handled by 0" 到傳入訊息。

唯一的區別是,我們將使用 Subscriber.Spec.Reply 欄位將最後一個步驟的輸出連接到事件顯示 Pod。

請參閱 有回覆的序列 (最後一個步驟產生輸出)

串聯序列

在下一個範例中,我們將使用相同的直接連接到 PingSource 的 3 步驟 Sequence。每個步驟只是簡單地附加 "- Handled by",例如,Sequence 中的第一個步驟會將傳入訊息附加 "- Handled by 0" 到傳入訊息。

唯一的區別是,我們將使用 Subscriber.Spec.Reply 欄位將最後一個步驟的輸出連接到另一個 Sequence,該序列執行與第一個管道相同的訊息修改 (但步驟不同)。

請參閱 串聯序列

搭配 Broker/Trigger 模型使用序列

您還可以建立以 Sequence 為目標的 Trigger。這次,我們將連接 PingSource 以將事件傳送到 Broker,然後讓 Sequence 將產生的事件發回 Broker,以便其他 Triggers 可以觀察到 Sequence 的結果。

請參閱 搭配 Broker/Trigger 模型使用序列

我們使用分析和 Cookie 來了解網站流量。您使用我們網站的相關資訊會與 Google 分享,以達到該目的。瞭解更多。