Google Cloud Pub/Sub 擴充功能

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。
info

版本:1.5.1

將訊息發布至 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,並將該 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,並將該 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 陣列 無 否

回應

JSON,內含發布至主題的訊息 ID。例如:

{"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 編碼值。 無。 是。