Google Cloud Pub/Sub 擴充功能

您正在查看 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

版本:2.0.0

將訊息發布至 Google Cloud Pub/Sub 服務的主題。

本內容提供設定和使用此擴充功能的參考資訊。

必要條件

使用 ExtensionCallout 政策從 API proxy 使用擴充功能前,您必須:

  1. 快速入門:使用控制台所述,建立 Cloud Pub/Sub 主題。

  2. 建立主題後,請授予權限,以便發布至 Cloud Pub/Sub 主題。舉例來說,您可以使用 roles/pubsub.publisher 角色發布主題。如要進一步瞭解 Cloud Pub/Sub 角色,請參閱「存取權控管」。

  3. 使用 GCP 主控台為服務帳戶產生金鑰

  4. 使用設定參考資料新增及設定擴充功能時,請使用產生的 JSON 金鑰檔案內容。

關於 Cloud Pub/Sub

Cloud Pub/Sub 提供多對多非同步訊息傳遞功能,可分離傳送者和接收者。Cloud Pub/Sub 提供低延遲且持久耐用的訊息傳遞功能,可協助開發人員快速整合在 Google Cloud Platform 中與外部代管的系統。

如果您剛開始使用 Cloud Pub/Sub,請參閱 Cloud Pub/Sub 說明文件中的快速入門課程

範例

以下範例說明如何使用ExtensionCallout 政策設定支援 Cloud Pub/Sub 擴充動作。

簡訊

在本例中,publish 動作會將訊息以簡單字串的形式發布至擴充功能設定中指定的主題。publish 動作會傳回主題中已發布的訊息 ID,並將其寫入 <Output> 標記指定的變數:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Publish-Message">
    <DisplayName>Publish Message</DisplayName>
    <Connector>cloud-pub-sub-extension-example</Connector>
    <Action>publish</Action>
    <Input><![CDATA[
      {
          "message" : "My test message."
      }
    ]]></Input>
    <Output>topic.message</Output>
</ConnectorCallout>

以下「指派訊息」政策會使用儲存擴充功能回應的變數值,指派回應酬載。郵件 ID 會儲存在輸出變數的 messageId 屬性中:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Topic-Message-ID">
    <DisplayName>Get Topic Message ID</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{topic.message.messageId}</Payload>
    </Set>
</AssignMessage>

回應資料會以 JSON 格式傳回:

{"messageId":"165918654986954"}

因此,topic.message.messageId 的值為 165918654986954。

JSON 訊息

在這個範例中,publish 動作會將訊息以 JSON 格式發布至擴充功能設定中指定的主題。publish 動作會傳回主題中已發布的訊息 ID,並將其寫入 <Output> 標記指定的變數:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Publish-Message">
    <DisplayName>Publish Message</DisplayName>
    <Connector>cloud-pub-sub-extension-example</Connector>
    <Action>publish</Action>
    <Input><![CDATA[
      {
          "message" : { "info" : "My test message" }
      }
    ]]></Input>
    <Output>topic.message</Output>
</ConnectorCallout>

以下「指派訊息」政策會使用儲存擴充功能回應的變數值,指派回應酬載。郵件 ID 會儲存在輸出變數的 messageId 屬性中:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Topic-Message-ID">
    <DisplayName>Get Topic Message ID</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{topic.message.messageId}</Payload>
    </Set>
</AssignMessage>

回應資料會以 JSON 格式傳回:

{"messageId":"165918654986954"}

因此,topic.message.messageId 的值為 165918654986954。

動作

publish

將訊息發布至此擴充功能設定中指定的主題。

語法

<Action>publish</Action>
<Input><![CDATA[{
  "message" : "message-to-publish" | JSON-structured-data,
  "customAttributes": JSON-array
}]]></Input>

字串範例

<Action>publish</Action>
<Input><![CDATA[
  {
      "message" : "My test message."
  }
]]></Input>

JSON 結構化資料範例

<Action>publish</Action>
<Input><![CDATA[
  {
      "message" : { "info" : "My test message" }
  }
]]></Input>

自訂屬性範例

<Action>publish</Action>
<Input><![CDATA[
  {
      "message" : { "info" : "My test message" },
      "customAttributes": {"attr1": "foo", "attr2": "bar"}
  }
]]></Input>

要求參數

參數 說明 類型 預設 必填
訊息 要發布的訊息。您可以使用簡單的字串,或使用自己設計的 JSON 結構化訊息。 字串或 JSON
customAttributes

要新增至表單訊息的自訂屬性:

"customAttributes": {"attr1": "foo", "attr2": "bar"}
JSON 陣列

回應

包含已發布至主題的訊息 ID 的 JSON。例如:

{"messageId":"165918654986954"}

設定參考資料

如要設定及部署此擴充功能,以便在 API 代理程式中使用,請使用下列說明。

常見的擴充功能屬性

每個擴充功能都有下列屬性。

屬性 說明 預設 必要
name 您要為這項擴充功能設定的名稱。 相容
packageName Apigee Edge 指定的擴充功能套件名稱。 相容
version 擴充功能的擴充功能套件版本號碼。 相容
configuration 您要新增的擴充功能專屬的設定值。請參閱「這個擴充功能套件的屬性」一文 相容

這個擴充功能套件的屬性

屬性 說明 預設 必填
topic 要發布至的主題。請從 Pub/Sub 服務取得這個值,例如從服務的 GCP 控制台取得。舉例來說,主題名稱的格式可能為 projects/GCP-PROJECT-ID/topics/TOPIC-NAME 無。 是。
credentials 輸入 Apigee Edge 主控台後,這就是服務帳戶金鑰檔案的內容。透過管理 API 傳送時,這會是從服務帳戶金鑰檔案產生的 base64 編碼值。 無。 是。