Google Cloud Pub/Sub 擴充功能

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

版本:2.0.2

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

這項內容提供設定及使用這項擴充功能的參考資料。

必要條件

使用 ExtensionCallout 政策從 API Proxy 使用擴充功能之前,請務必完成下列步驟:

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

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

  3. 使用 Google Cloud 控制台產生服務帳戶的金鑰

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

關於 Cloud Pub/Sub

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

如果您剛開始使用 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 服務取得這個值,例如從服務的 Google Cloud 控制台取得。舉例來說,主題名稱可能採用 projects/GCP-PROJECT-ID/topics/TOPIC-NAME 格式 無。 是。
credentials 在 Apigee Edge 控制台中輸入時,這是服務帳戶金鑰檔案的內容。透過 Management API 傳送時,這是從服務帳戶金鑰檔案產生的 base64 編碼值。 無。 是。