您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
版本:2.0.2
將訊息發布至 Google Cloud Pub/Sub 服務中的主題。
這項內容提供設定及使用這項擴充功能的參考資料。
必要條件
使用 ExtensionCallout 政策從 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 中與外部託管的系統。
如果您剛開始使用 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 編碼值。 | 無。 | 是。 |