Google Cloud Pub/Sub 擴充功能

您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件
資訊

版本:1.5.1

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

本文提供設定和使用這個擴充功能的參考資料。

必要條件

透過 Extension callout 政策透過 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 說明文件中的快速入門導覽課程

範例

以下範例說明如何使用 Extension callout 政策,為 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>

下列「Assign Message」政策會使用儲存擴充功能回應的變數值來指派回應酬載。訊息 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>

下列「Assign Message」政策會使用儲存擴充功能回應的變數值來指派回應酬載。訊息 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 Proxy,請按照下列指示操作。

常見擴充功能屬性

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

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

這個擴充功能套件的屬性

屬性 說明 預設 需要
topic 要發布的目標主題。從 Pub/Sub 服務取得這個值,例如從 GCP 控制台取得服務的值。舉例來說,主題名稱的格式可能是 projects/GCP-PROJECT-ID/topics/TOPIC-NAME 無。 可以。
credentials 在 Apigee Edge 控制台中輸入時,這裡會顯示服務帳戶金鑰檔案的內容。透過 Management API 傳送時,是由服務帳戶金鑰檔案產生的 Base64 編碼值。 無。 可以。