查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
版本:1.5.1
將訊息發布至 Google Cloud Pub/Sub 服務中的主題。
這項內容提供設定與使用這項擴充功能的參考資源。
必要條件
透過 Extension 摘要政策使用 API Proxy 擴充功能之前,您必須:
按照「快速入門導覽課程:使用主控台」中的說明建立 Cloud Pub/Sub 主題。
找到主題後,請授予權限以發布至您的 Cloud Pub/Sub 主題。舉例來說,您可以使用
roles/pubsub.publisher
角色發布至主題。如要進一步瞭解 Cloud Pub/Sub 角色,請參閱存取權控管一文。
關於 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 編碼值。 | 無。 | 是。 |