Google Cloud Pub/Sub 擴充功能

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

版本:1.5.2

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

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

必要條件

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

範例

以下範例說明如何透過擴充功能摘要政策,設定對 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 陣列

回應

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